@strapi/i18n 0.0.0-experimental.bffd3c1819cd08304e7d270e88b4973e9fcbc183 → 0.0.0-experimental.c23f51fc41b3ef5de081f427d07e87af93cdcb2c

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 (366) hide show
  1. package/dist/admin/components/BulkLocaleActionModal.js +262 -0
  2. package/dist/admin/components/BulkLocaleActionModal.js.map +1 -0
  3. package/dist/admin/components/BulkLocaleActionModal.mjs +260 -0
  4. package/dist/admin/components/BulkLocaleActionModal.mjs.map +1 -0
  5. package/dist/admin/components/CMHeaderActions.js +721 -0
  6. package/dist/admin/components/CMHeaderActions.js.map +1 -0
  7. package/dist/admin/components/CMHeaderActions.mjs +696 -0
  8. package/dist/admin/components/CMHeaderActions.mjs.map +1 -0
  9. package/dist/admin/components/CMListViewModalsAdditionalInformation.js +69 -0
  10. package/dist/admin/components/CMListViewModalsAdditionalInformation.js.map +1 -0
  11. package/dist/admin/components/CMListViewModalsAdditionalInformation.mjs +65 -0
  12. package/dist/admin/components/CMListViewModalsAdditionalInformation.mjs.map +1 -0
  13. package/dist/admin/components/CheckboxConfirmation.js +155 -0
  14. package/dist/admin/components/CheckboxConfirmation.js.map +1 -0
  15. package/dist/admin/components/CheckboxConfirmation.mjs +134 -0
  16. package/dist/admin/components/CheckboxConfirmation.mjs.map +1 -0
  17. package/dist/admin/components/CreateLocale.js +395 -0
  18. package/dist/admin/components/CreateLocale.js.map +1 -0
  19. package/dist/admin/components/CreateLocale.mjs +369 -0
  20. package/dist/admin/components/CreateLocale.mjs.map +1 -0
  21. package/dist/admin/components/DeleteLocale.js +90 -0
  22. package/dist/admin/components/DeleteLocale.js.map +1 -0
  23. package/dist/admin/components/DeleteLocale.mjs +69 -0
  24. package/dist/admin/components/DeleteLocale.mjs.map +1 -0
  25. package/dist/admin/components/EditLocale.js +212 -0
  26. package/dist/admin/components/EditLocale.js.map +1 -0
  27. package/dist/admin/components/EditLocale.mjs +190 -0
  28. package/dist/admin/components/EditLocale.mjs.map +1 -0
  29. package/dist/admin/components/LocaleListCell.js +82 -0
  30. package/dist/admin/components/LocaleListCell.js.map +1 -0
  31. package/dist/admin/components/LocaleListCell.mjs +80 -0
  32. package/dist/admin/components/LocaleListCell.mjs.map +1 -0
  33. package/dist/admin/components/LocalePicker.js +98 -0
  34. package/dist/admin/components/LocalePicker.js.map +1 -0
  35. package/dist/admin/components/LocalePicker.mjs +77 -0
  36. package/dist/admin/components/LocalePicker.mjs.map +1 -0
  37. package/dist/admin/components/LocaleTable.js +143 -0
  38. package/dist/admin/components/LocaleTable.js.map +1 -0
  39. package/dist/admin/components/LocaleTable.mjs +122 -0
  40. package/dist/admin/components/LocaleTable.mjs.map +1 -0
  41. package/dist/admin/constants.js +37 -0
  42. package/dist/admin/constants.js.map +1 -0
  43. package/dist/admin/constants.mjs +35 -0
  44. package/dist/admin/constants.mjs.map +1 -0
  45. package/dist/admin/contentManagerHooks/editView.js +106 -0
  46. package/dist/admin/contentManagerHooks/editView.js.map +1 -0
  47. package/dist/admin/contentManagerHooks/editView.mjs +85 -0
  48. package/dist/admin/contentManagerHooks/editView.mjs.map +1 -0
  49. package/dist/admin/contentManagerHooks/listView.js +43 -0
  50. package/dist/admin/contentManagerHooks/listView.js.map +1 -0
  51. package/dist/admin/contentManagerHooks/listView.mjs +41 -0
  52. package/dist/admin/contentManagerHooks/listView.mjs.map +1 -0
  53. package/dist/admin/contentReleasesHooks/releaseDetailsView.js +20 -0
  54. package/dist/admin/contentReleasesHooks/releaseDetailsView.js.map +1 -0
  55. package/dist/admin/contentReleasesHooks/releaseDetailsView.mjs +18 -0
  56. package/dist/admin/contentReleasesHooks/releaseDetailsView.mjs.map +1 -0
  57. package/dist/admin/hooks/useI18n.js +78 -0
  58. package/dist/admin/hooks/useI18n.js.map +1 -0
  59. package/dist/admin/hooks/useI18n.mjs +57 -0
  60. package/dist/admin/hooks/useI18n.mjs.map +1 -0
  61. package/dist/admin/index.js +226 -5
  62. package/dist/admin/index.js.map +1 -1
  63. package/dist/admin/index.mjs +202 -5
  64. package/dist/admin/index.mjs.map +1 -1
  65. package/dist/admin/middlewares/extendCTBAttributeInitialData.js +61 -0
  66. package/dist/admin/middlewares/extendCTBAttributeInitialData.js.map +1 -0
  67. package/dist/admin/middlewares/extendCTBAttributeInitialData.mjs +59 -0
  68. package/dist/admin/middlewares/extendCTBAttributeInitialData.mjs.map +1 -0
  69. package/dist/admin/middlewares/extendCTBInitialData.js +40 -0
  70. package/dist/admin/middlewares/extendCTBInitialData.js.map +1 -0
  71. package/dist/admin/middlewares/extendCTBInitialData.mjs +38 -0
  72. package/dist/admin/middlewares/extendCTBInitialData.mjs.map +1 -0
  73. package/dist/admin/middlewares/rbac-middleware.js +49 -0
  74. package/dist/admin/middlewares/rbac-middleware.js.map +1 -0
  75. package/dist/admin/middlewares/rbac-middleware.mjs +28 -0
  76. package/dist/admin/middlewares/rbac-middleware.mjs.map +1 -0
  77. package/dist/admin/pages/SettingsPage.js +107 -0
  78. package/dist/admin/pages/SettingsPage.js.map +1 -0
  79. package/dist/admin/pages/SettingsPage.mjs +85 -0
  80. package/dist/admin/pages/SettingsPage.mjs.map +1 -0
  81. package/dist/admin/pluginId.js +6 -0
  82. package/dist/admin/pluginId.js.map +1 -0
  83. package/dist/admin/pluginId.mjs +4 -0
  84. package/dist/admin/pluginId.mjs.map +1 -0
  85. package/dist/admin/services/api.js +12 -0
  86. package/dist/admin/services/api.js.map +1 -0
  87. package/dist/admin/services/api.mjs +10 -0
  88. package/dist/admin/services/api.mjs.map +1 -0
  89. package/dist/admin/services/locales.js +70 -0
  90. package/dist/admin/services/locales.js.map +1 -0
  91. package/dist/admin/services/locales.mjs +64 -0
  92. package/dist/admin/services/locales.mjs.map +1 -0
  93. package/dist/admin/services/relations.js +23 -0
  94. package/dist/admin/services/relations.js.map +1 -0
  95. package/dist/admin/services/relations.mjs +21 -0
  96. package/dist/admin/services/relations.mjs.map +1 -0
  97. package/dist/admin/src/components/CMHeaderActions.d.ts +1 -1
  98. package/dist/admin/src/components/tests/CreateLocale.test.d.ts +1 -0
  99. package/dist/admin/src/components/tests/DeleteLocale.test.d.ts +1 -0
  100. package/dist/admin/src/components/tests/EditLocale.test.d.ts +1 -0
  101. package/dist/admin/src/components/tests/LocaleListCell.test.d.ts +1 -0
  102. package/dist/admin/src/contentReleasesHooks/releaseDetailsView.d.ts +1 -1
  103. package/dist/admin/src/pages/tests/SettingsPage.test.d.ts +1 -0
  104. package/dist/admin/tests/server.d.ts +1 -0
  105. package/dist/admin/tests/utils.d.ts +6 -0
  106. package/dist/admin/translations/de.json.js +66 -0
  107. package/dist/admin/translations/de.json.js.map +1 -0
  108. package/dist/admin/translations/de.json.mjs +64 -0
  109. package/dist/admin/translations/de.json.mjs.map +1 -0
  110. package/dist/admin/translations/dk.json.js +66 -0
  111. package/dist/admin/translations/dk.json.js.map +1 -0
  112. package/dist/admin/translations/dk.json.mjs +64 -0
  113. package/dist/admin/translations/dk.json.mjs.map +1 -0
  114. package/dist/admin/translations/en.json.js +81 -0
  115. package/dist/admin/translations/en.json.js.map +1 -0
  116. package/dist/admin/translations/en.json.mjs +79 -0
  117. package/dist/admin/translations/en.json.mjs.map +1 -0
  118. package/dist/admin/translations/es.json.js +66 -0
  119. package/dist/admin/translations/es.json.js.map +1 -0
  120. package/dist/admin/translations/es.json.mjs +64 -0
  121. package/dist/admin/translations/es.json.mjs.map +1 -0
  122. package/dist/admin/translations/fr.json.js +66 -0
  123. package/dist/admin/translations/fr.json.js.map +1 -0
  124. package/dist/admin/translations/fr.json.mjs +64 -0
  125. package/dist/admin/translations/fr.json.mjs.map +1 -0
  126. package/dist/admin/translations/ko.json.js +65 -0
  127. package/dist/admin/translations/ko.json.js.map +1 -0
  128. package/dist/admin/translations/ko.json.mjs +63 -0
  129. package/dist/admin/translations/ko.json.mjs.map +1 -0
  130. package/dist/admin/translations/pl.json.js +66 -0
  131. package/dist/admin/translations/pl.json.js.map +1 -0
  132. package/dist/admin/translations/pl.json.mjs +64 -0
  133. package/dist/admin/translations/pl.json.mjs.map +1 -0
  134. package/dist/admin/translations/ru.json.js +68 -0
  135. package/dist/admin/translations/ru.json.js.map +1 -0
  136. package/dist/admin/translations/ru.json.mjs +66 -0
  137. package/dist/admin/translations/ru.json.mjs.map +1 -0
  138. package/dist/admin/translations/tr.json.js +66 -0
  139. package/dist/admin/translations/tr.json.js.map +1 -0
  140. package/dist/admin/translations/tr.json.mjs +64 -0
  141. package/dist/admin/translations/tr.json.mjs.map +1 -0
  142. package/dist/admin/translations/uk.json.js +82 -0
  143. package/dist/admin/translations/uk.json.js.map +1 -0
  144. package/dist/admin/translations/uk.json.mjs +80 -0
  145. package/dist/admin/translations/uk.json.mjs.map +1 -0
  146. package/dist/admin/translations/zh-Hans.json.js +57 -0
  147. package/dist/admin/translations/zh-Hans.json.js.map +1 -0
  148. package/dist/admin/translations/zh-Hans.json.mjs +55 -0
  149. package/dist/admin/translations/zh-Hans.json.mjs.map +1 -0
  150. package/dist/admin/translations/zh.json.js +66 -0
  151. package/dist/admin/translations/zh.json.js.map +1 -0
  152. package/dist/admin/translations/zh.json.mjs +64 -0
  153. package/dist/admin/translations/zh.json.mjs.map +1 -0
  154. package/dist/admin/utils/baseQuery.js +8 -0
  155. package/dist/admin/utils/baseQuery.js.map +1 -0
  156. package/dist/admin/utils/baseQuery.mjs +6 -0
  157. package/dist/admin/utils/baseQuery.mjs.map +1 -0
  158. package/dist/admin/utils/clean.js +70 -0
  159. package/dist/admin/utils/clean.js.map +1 -0
  160. package/dist/admin/utils/clean.mjs +68 -0
  161. package/dist/admin/utils/clean.mjs.map +1 -0
  162. package/dist/admin/utils/fields.js +29 -0
  163. package/dist/admin/utils/fields.js.map +1 -0
  164. package/dist/admin/utils/fields.mjs +26 -0
  165. package/dist/admin/utils/fields.mjs.map +1 -0
  166. package/dist/admin/utils/getTranslation.js +8 -0
  167. package/dist/admin/utils/getTranslation.js.map +1 -0
  168. package/dist/admin/utils/getTranslation.mjs +6 -0
  169. package/dist/admin/utils/getTranslation.mjs.map +1 -0
  170. package/dist/admin/utils/prefixPluginTranslations.js +11 -0
  171. package/dist/admin/utils/prefixPluginTranslations.js.map +1 -0
  172. package/dist/admin/utils/prefixPluginTranslations.mjs +9 -0
  173. package/dist/admin/utils/prefixPluginTranslations.mjs.map +1 -0
  174. package/dist/admin/utils/schemas.js +68 -0
  175. package/dist/admin/utils/schemas.js.map +1 -0
  176. package/dist/admin/utils/schemas.mjs +66 -0
  177. package/dist/admin/utils/schemas.mjs.map +1 -0
  178. package/dist/admin/utils/strings.js +6 -0
  179. package/dist/admin/utils/strings.js.map +1 -0
  180. package/dist/admin/utils/strings.mjs +4 -0
  181. package/dist/admin/utils/strings.mjs.map +1 -0
  182. package/dist/server/bootstrap.js +79 -0
  183. package/dist/server/bootstrap.js.map +1 -0
  184. package/dist/server/bootstrap.mjs +77 -0
  185. package/dist/server/bootstrap.mjs.map +1 -0
  186. package/dist/server/constants/index.js +29 -0
  187. package/dist/server/constants/index.js.map +1 -0
  188. package/dist/server/constants/index.mjs +25 -0
  189. package/dist/server/constants/index.mjs.map +1 -0
  190. package/dist/server/constants/iso-locales.json.js +2423 -0
  191. package/dist/server/constants/iso-locales.json.js.map +1 -0
  192. package/dist/server/constants/iso-locales.json.mjs +2421 -0
  193. package/dist/server/constants/iso-locales.json.mjs.map +1 -0
  194. package/dist/server/content-types/index.js +10 -0
  195. package/dist/server/content-types/index.js.map +1 -0
  196. package/dist/server/content-types/index.mjs +8 -0
  197. package/dist/server/content-types/index.mjs.map +1 -0
  198. package/dist/server/content-types/locale/index.js +10 -0
  199. package/dist/server/content-types/locale/index.js.map +1 -0
  200. package/dist/server/content-types/locale/index.mjs +8 -0
  201. package/dist/server/content-types/locale/index.mjs.map +1 -0
  202. package/dist/server/content-types/locale/schema.json.js +46 -0
  203. package/dist/server/content-types/locale/schema.json.js.map +1 -0
  204. package/dist/server/content-types/locale/schema.json.mjs +38 -0
  205. package/dist/server/content-types/locale/schema.json.mjs.map +1 -0
  206. package/dist/server/controllers/content-types.js +76 -0
  207. package/dist/server/controllers/content-types.js.map +1 -0
  208. package/dist/server/controllers/content-types.mjs +74 -0
  209. package/dist/server/controllers/content-types.mjs.map +1 -0
  210. package/dist/server/controllers/index.js +14 -0
  211. package/dist/server/controllers/index.js.map +1 -0
  212. package/dist/server/controllers/index.mjs +12 -0
  213. package/dist/server/controllers/index.mjs.map +1 -0
  214. package/dist/server/controllers/iso-locales.js +13 -0
  215. package/dist/server/controllers/iso-locales.js.map +1 -0
  216. package/dist/server/controllers/iso-locales.mjs +11 -0
  217. package/dist/server/controllers/iso-locales.mjs.map +1 -0
  218. package/dist/server/controllers/locales.js +108 -0
  219. package/dist/server/controllers/locales.js.map +1 -0
  220. package/dist/server/controllers/locales.mjs +87 -0
  221. package/dist/server/controllers/locales.mjs.map +1 -0
  222. package/dist/server/controllers/validate-locale-creation.js +47 -0
  223. package/dist/server/controllers/validate-locale-creation.js.map +1 -0
  224. package/dist/server/controllers/validate-locale-creation.mjs +45 -0
  225. package/dist/server/controllers/validate-locale-creation.mjs.map +1 -0
  226. package/dist/server/domain/locale.js +11 -0
  227. package/dist/server/domain/locale.js.map +1 -0
  228. package/dist/server/domain/locale.mjs +9 -0
  229. package/dist/server/domain/locale.mjs.map +1 -0
  230. package/dist/server/graphql.js +115 -0
  231. package/dist/server/graphql.js.map +1 -0
  232. package/dist/server/graphql.mjs +113 -0
  233. package/dist/server/graphql.mjs.map +1 -0
  234. package/dist/server/index.js +18 -3460
  235. package/dist/server/index.js.map +1 -1
  236. package/dist/server/index.mjs +17 -3443
  237. package/dist/server/index.mjs.map +1 -1
  238. package/dist/server/register.js +79 -0
  239. package/dist/server/register.js.map +1 -0
  240. package/dist/server/register.mjs +77 -0
  241. package/dist/server/register.mjs.map +1 -0
  242. package/dist/server/routes/admin.js +102 -0
  243. package/dist/server/routes/admin.js.map +1 -0
  244. package/dist/server/routes/admin.mjs +100 -0
  245. package/dist/server/routes/admin.mjs.map +1 -0
  246. package/dist/server/routes/content-api.js +15 -0
  247. package/dist/server/routes/content-api.js.map +1 -0
  248. package/dist/server/routes/content-api.mjs +13 -0
  249. package/dist/server/routes/content-api.mjs.map +1 -0
  250. package/dist/server/routes/index.js +12 -0
  251. package/dist/server/routes/index.js.map +1 -0
  252. package/dist/server/routes/index.mjs +10 -0
  253. package/dist/server/routes/index.mjs.map +1 -0
  254. package/dist/server/services/content-types.js +157 -0
  255. package/dist/server/services/content-types.js.map +1 -0
  256. package/dist/server/services/content-types.mjs +155 -0
  257. package/dist/server/services/content-types.mjs.map +1 -0
  258. package/dist/server/services/index.js +22 -0
  259. package/dist/server/services/index.js.map +1 -0
  260. package/dist/server/services/index.mjs +20 -0
  261. package/dist/server/services/index.mjs.map +1 -0
  262. package/dist/server/services/iso-locales.js +12 -0
  263. package/dist/server/services/iso-locales.js.map +1 -0
  264. package/dist/server/services/iso-locales.mjs +10 -0
  265. package/dist/server/services/iso-locales.mjs.map +1 -0
  266. package/dist/server/services/locales.js +114 -0
  267. package/dist/server/services/locales.js.map +1 -0
  268. package/dist/server/services/locales.mjs +112 -0
  269. package/dist/server/services/locales.mjs.map +1 -0
  270. package/dist/server/services/localizations.js +68 -0
  271. package/dist/server/services/localizations.js.map +1 -0
  272. package/dist/server/services/localizations.mjs +66 -0
  273. package/dist/server/services/localizations.mjs.map +1 -0
  274. package/dist/server/services/metrics.js +30 -0
  275. package/dist/server/services/metrics.js.map +1 -0
  276. package/dist/server/services/metrics.mjs +28 -0
  277. package/dist/server/services/metrics.mjs.map +1 -0
  278. package/dist/server/services/permissions/actions.js +136 -0
  279. package/dist/server/services/permissions/actions.js.map +1 -0
  280. package/dist/server/services/permissions/actions.mjs +134 -0
  281. package/dist/server/services/permissions/actions.mjs.map +1 -0
  282. package/dist/server/services/permissions/engine.js +52 -0
  283. package/dist/server/services/permissions/engine.js.map +1 -0
  284. package/dist/server/services/permissions/engine.mjs +50 -0
  285. package/dist/server/services/permissions/engine.mjs.map +1 -0
  286. package/dist/server/services/permissions/sections-builder.js +45 -0
  287. package/dist/server/services/permissions/sections-builder.js.map +1 -0
  288. package/dist/server/services/permissions/sections-builder.mjs +43 -0
  289. package/dist/server/services/permissions/sections-builder.mjs.map +1 -0
  290. package/dist/server/services/permissions.js +14 -0
  291. package/dist/server/services/permissions.js.map +1 -0
  292. package/dist/server/services/permissions.mjs +12 -0
  293. package/dist/server/services/permissions.mjs.map +1 -0
  294. package/dist/server/services/sanitize/index.js +34 -0
  295. package/dist/server/services/sanitize/index.js.map +1 -0
  296. package/dist/server/services/sanitize/index.mjs +32 -0
  297. package/dist/server/services/sanitize/index.mjs.map +1 -0
  298. package/dist/server/src/services/localizations.d.ts +1 -1
  299. package/dist/server/src/services/localizations.d.ts.map +1 -1
  300. package/dist/server/utils/index.js +16 -0
  301. package/dist/server/utils/index.js.map +1 -0
  302. package/dist/server/utils/index.mjs +13 -0
  303. package/dist/server/utils/index.mjs.map +1 -0
  304. package/dist/server/validation/content-types.js +18 -0
  305. package/dist/server/validation/content-types.js.map +1 -0
  306. package/dist/server/validation/content-types.mjs +16 -0
  307. package/dist/server/validation/content-types.mjs.map +1 -0
  308. package/dist/server/validation/locales.js +23 -0
  309. package/dist/server/validation/locales.js.map +1 -0
  310. package/dist/server/validation/locales.mjs +20 -0
  311. package/dist/server/validation/locales.mjs.map +1 -0
  312. package/dist/shared/contracts/content-manager.d.ts +1 -1
  313. package/dist/shared/contracts/shared.d.ts +1 -1
  314. package/package.json +14 -11
  315. package/dist/_chunks/SettingsPage-B-KzAqT3.mjs +0 -554
  316. package/dist/_chunks/SettingsPage-B-KzAqT3.mjs.map +0 -1
  317. package/dist/_chunks/SettingsPage-hyOi94O9.js +0 -573
  318. package/dist/_chunks/SettingsPage-hyOi94O9.js.map +0 -1
  319. package/dist/_chunks/de-BOhNX_-5.js +0 -65
  320. package/dist/_chunks/de-BOhNX_-5.js.map +0 -1
  321. package/dist/_chunks/de-D80IRBP9.mjs +0 -65
  322. package/dist/_chunks/de-D80IRBP9.mjs.map +0 -1
  323. package/dist/_chunks/dk-CJ6Zzz78.mjs +0 -65
  324. package/dist/_chunks/dk-CJ6Zzz78.mjs.map +0 -1
  325. package/dist/_chunks/dk-cjXm0p3m.js +0 -65
  326. package/dist/_chunks/dk-cjXm0p3m.js.map +0 -1
  327. package/dist/_chunks/en-BTyF7WVW.mjs +0 -80
  328. package/dist/_chunks/en-BTyF7WVW.mjs.map +0 -1
  329. package/dist/_chunks/en-UlC0jh2t.js +0 -80
  330. package/dist/_chunks/en-UlC0jh2t.js.map +0 -1
  331. package/dist/_chunks/es-V8WnPN7w.mjs +0 -65
  332. package/dist/_chunks/es-V8WnPN7w.mjs.map +0 -1
  333. package/dist/_chunks/es-hr9b_HLp.js +0 -65
  334. package/dist/_chunks/es-hr9b_HLp.js.map +0 -1
  335. package/dist/_chunks/fr-BFmBbE0H.js +0 -65
  336. package/dist/_chunks/fr-BFmBbE0H.js.map +0 -1
  337. package/dist/_chunks/fr-F94noFiV.mjs +0 -65
  338. package/dist/_chunks/fr-F94noFiV.mjs.map +0 -1
  339. package/dist/_chunks/index-BcYj5jo9.mjs +0 -1589
  340. package/dist/_chunks/index-BcYj5jo9.mjs.map +0 -1
  341. package/dist/_chunks/index-C8NzsAKp.js +0 -1610
  342. package/dist/_chunks/index-C8NzsAKp.js.map +0 -1
  343. package/dist/_chunks/ko-C40pNQ9b.js +0 -64
  344. package/dist/_chunks/ko-C40pNQ9b.js.map +0 -1
  345. package/dist/_chunks/ko-CF-P3Car.mjs +0 -64
  346. package/dist/_chunks/ko-CF-P3Car.mjs.map +0 -1
  347. package/dist/_chunks/pl-Dxr9RUmD.mjs +0 -65
  348. package/dist/_chunks/pl-Dxr9RUmD.mjs.map +0 -1
  349. package/dist/_chunks/pl-JtWBy-JQ.js +0 -65
  350. package/dist/_chunks/pl-JtWBy-JQ.js.map +0 -1
  351. package/dist/_chunks/ru-B-4sVwXN.mjs +0 -67
  352. package/dist/_chunks/ru-B-4sVwXN.mjs.map +0 -1
  353. package/dist/_chunks/ru-COSWt3Nu.js +0 -67
  354. package/dist/_chunks/ru-COSWt3Nu.js.map +0 -1
  355. package/dist/_chunks/tr-BVj1O5ch.js +0 -65
  356. package/dist/_chunks/tr-BVj1O5ch.js.map +0 -1
  357. package/dist/_chunks/tr-Ccu6Yj11.mjs +0 -65
  358. package/dist/_chunks/tr-Ccu6Yj11.mjs.map +0 -1
  359. package/dist/_chunks/zh-BIz395Ms.mjs +0 -65
  360. package/dist/_chunks/zh-BIz395Ms.mjs.map +0 -1
  361. package/dist/_chunks/zh-Hans-Bfo6_TCM.mjs +0 -56
  362. package/dist/_chunks/zh-Hans-Bfo6_TCM.mjs.map +0 -1
  363. package/dist/_chunks/zh-Hans-DIEm_EMC.js +0 -56
  364. package/dist/_chunks/zh-Hans-DIEm_EMC.js.map +0 -1
  365. package/dist/_chunks/zh-wkBPBkhc.js +0 -65
  366. package/dist/_chunks/zh-wkBPBkhc.js.map +0 -1
@@ -0,0 +1,112 @@
1
+ import { isNil } from 'lodash/fp';
2
+ import { DEFAULT_LOCALE } from '../constants/index.mjs';
3
+ import { getService, getCoreStore } from '../utils/index.mjs';
4
+
5
+ const find = (params = {})=>strapi.db.query('plugin::i18n.locale').findMany({
6
+ where: params
7
+ });
8
+ const findById = (id)=>strapi.db.query('plugin::i18n.locale').findOne({
9
+ where: {
10
+ id
11
+ }
12
+ });
13
+ const findByCode = (code)=>strapi.db.query('plugin::i18n.locale').findOne({
14
+ where: {
15
+ code
16
+ }
17
+ });
18
+ const count = (params = {})=>strapi.db.query('plugin::i18n.locale').count({
19
+ where: params
20
+ });
21
+ const create = async (locale)=>{
22
+ const result = await strapi.db.query('plugin::i18n.locale').create({
23
+ data: locale
24
+ });
25
+ getService('metrics').sendDidUpdateI18nLocalesEvent();
26
+ return result;
27
+ };
28
+ const update = async (params, updates)=>{
29
+ const result = await strapi.db.query('plugin::i18n.locale').update({
30
+ where: params,
31
+ data: updates
32
+ });
33
+ getService('metrics').sendDidUpdateI18nLocalesEvent();
34
+ return result;
35
+ };
36
+ const deleteFn = async ({ id })=>{
37
+ const localeToDelete = await findById(id);
38
+ if (localeToDelete) {
39
+ await deleteAllLocalizedEntriesFor({
40
+ locale: localeToDelete.code
41
+ });
42
+ const result = await strapi.db.query('plugin::i18n.locale').delete({
43
+ where: {
44
+ id
45
+ }
46
+ });
47
+ getService('metrics').sendDidUpdateI18nLocalesEvent();
48
+ return result;
49
+ }
50
+ return localeToDelete;
51
+ };
52
+ const setDefaultLocale = ({ code })=>getCoreStore().set({
53
+ key: 'default_locale',
54
+ value: code
55
+ });
56
+ const getDefaultLocale = ()=>getCoreStore().get({
57
+ key: 'default_locale'
58
+ });
59
+ const setIsDefault = async (locales)=>{
60
+ if (isNil(locales)) {
61
+ return locales;
62
+ }
63
+ const actualDefault = await getDefaultLocale();
64
+ if (Array.isArray(locales)) {
65
+ return locales.map((locale)=>({
66
+ ...locale,
67
+ isDefault: actualDefault === locale.code
68
+ }));
69
+ }
70
+ // single locale
71
+ return {
72
+ ...locales,
73
+ isDefault: actualDefault === locales.code
74
+ };
75
+ };
76
+ const initDefaultLocale = async ()=>{
77
+ const existingLocalesNb = await strapi.db.query('plugin::i18n.locale').count();
78
+ if (existingLocalesNb === 0) {
79
+ await create(DEFAULT_LOCALE);
80
+ await setDefaultLocale({
81
+ code: DEFAULT_LOCALE.code
82
+ });
83
+ }
84
+ };
85
+ const deleteAllLocalizedEntriesFor = async ({ locale })=>{
86
+ const { isLocalizedContentType } = getService('content-types');
87
+ const localizedModels = Object.values(strapi.contentTypes).filter(isLocalizedContentType);
88
+ for (const model of localizedModels){
89
+ // FIXME: delete many content & their associations
90
+ await strapi.db.query(model.uid).deleteMany({
91
+ where: {
92
+ locale
93
+ }
94
+ });
95
+ }
96
+ };
97
+ const locales = ()=>({
98
+ find,
99
+ findById,
100
+ findByCode,
101
+ create,
102
+ update,
103
+ count,
104
+ setDefaultLocale,
105
+ getDefaultLocale,
106
+ setIsDefault,
107
+ delete: deleteFn,
108
+ initDefaultLocale
109
+ });
110
+
111
+ export { locales as default };
112
+ //# sourceMappingURL=locales.mjs.map
@@ -0,0 +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":"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"}
@@ -0,0 +1,68 @@
1
+ 'use strict';
2
+
3
+ var fp = require('lodash/fp');
4
+ var utils = require('@strapi/utils');
5
+ var index = require('../utils/index.js');
6
+
7
+ /**
8
+ * Update non localized fields of all the related localizations of an entry with the entry values
9
+ */ const syncNonLocalizedAttributes = async (sourceEntry, model)=>{
10
+ const { copyNonLocalizedAttributes } = index.getService('content-types');
11
+ const nonLocalizedAttributes = copyNonLocalizedAttributes(model, sourceEntry);
12
+ if (fp.isEmpty(nonLocalizedAttributes)) {
13
+ return;
14
+ }
15
+ const uid = model.uid;
16
+ const documentId = sourceEntry.documentId;
17
+ const locale = sourceEntry.locale;
18
+ const status = sourceEntry?.publishedAt ? 'published' : 'draft';
19
+ // Find all the entries that need to be updated
20
+ // this is every other entry of the document in the same status but a different locale
21
+ const localeEntriesToUpdate = await strapi.db.query(uid).findMany({
22
+ where: {
23
+ documentId,
24
+ publishedAt: status === 'published' ? {
25
+ $ne: null
26
+ } : null,
27
+ locale: {
28
+ $ne: locale
29
+ }
30
+ },
31
+ select: [
32
+ 'locale',
33
+ 'id'
34
+ ]
35
+ });
36
+ const entryData = await strapi.documents(uid).omitComponentData(nonLocalizedAttributes);
37
+ await utils.async.map(localeEntriesToUpdate, async (entry)=>{
38
+ const transformedData = await strapi.documents.utils.transformData(fp.cloneDeep(nonLocalizedAttributes), {
39
+ uid,
40
+ status,
41
+ locale: entry.locale,
42
+ allowMissingId: true
43
+ });
44
+ // Update or create non localized components for the entry
45
+ const componentData = await strapi.documents(uid).updateComponents(entry, transformedData);
46
+ // Update every other locale entry of this documentId in the same status
47
+ await strapi.db.query(uid).update({
48
+ where: {
49
+ documentId,
50
+ publishedAt: status === 'published' ? {
51
+ $ne: null
52
+ } : null,
53
+ locale: {
54
+ $eq: entry.locale
55
+ }
56
+ },
57
+ // The data we send to the update function is the entry data merged with
58
+ // the updated component data
59
+ data: Object.assign(fp.cloneDeep(entryData), componentData)
60
+ });
61
+ });
62
+ };
63
+ const localizations = ()=>({
64
+ syncNonLocalizedAttributes
65
+ });
66
+
67
+ module.exports = localizations;
68
+ //# sourceMappingURL=localizations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localizations.js","sources":["../../../server/src/services/localizations.ts"],"sourcesContent":["import { cloneDeep, isEmpty } from 'lodash/fp';\n\nimport type { Schema } from '@strapi/types';\nimport { async } from '@strapi/utils';\nimport { getService } from '../utils';\n\n/**\n * Update non localized fields of all the related localizations of an entry with the entry values\n */\nconst syncNonLocalizedAttributes = async (sourceEntry: any, model: Schema.ContentType) => {\n const { copyNonLocalizedAttributes } = getService('content-types');\n\n const nonLocalizedAttributes = copyNonLocalizedAttributes(model, sourceEntry);\n if (isEmpty(nonLocalizedAttributes)) {\n return;\n }\n\n const uid = model.uid;\n const documentId = sourceEntry.documentId;\n const locale = sourceEntry.locale;\n const status = sourceEntry?.publishedAt ? 'published' : 'draft';\n\n // Find all the entries that need to be updated\n // this is every other entry of the document in the same status but a different locale\n const localeEntriesToUpdate = await strapi.db.query(uid).findMany({\n where: {\n documentId,\n publishedAt: status === 'published' ? { $ne: null } : null,\n locale: { $ne: locale },\n },\n select: ['locale', 'id'],\n });\n\n const entryData = await strapi.documents(uid).omitComponentData(nonLocalizedAttributes);\n\n await async.map(localeEntriesToUpdate, async (entry: any) => {\n const transformedData = await strapi.documents.utils.transformData(\n cloneDeep(nonLocalizedAttributes),\n {\n uid,\n status,\n locale: entry.locale,\n allowMissingId: true,\n }\n );\n\n // Update or create non localized components for the entry\n const componentData = await strapi\n .documents(uid)\n .updateComponents(entry, transformedData as any);\n\n // Update every other locale entry of this documentId in the same status\n await strapi.db.query(uid).update({\n where: {\n documentId,\n publishedAt: status === 'published' ? { $ne: null } : null,\n locale: { $eq: entry.locale },\n },\n // The data we send to the update function is the entry data merged with\n // the updated component data\n data: Object.assign(cloneDeep(entryData), componentData),\n });\n });\n};\n\nconst localizations = () => ({\n syncNonLocalizedAttributes,\n});\n\ntype LocalizationsService = typeof localizations;\n\nexport default localizations;\nexport type { LocalizationsService };\n"],"names":["syncNonLocalizedAttributes","sourceEntry","model","copyNonLocalizedAttributes","getService","nonLocalizedAttributes","isEmpty","uid","documentId","locale","status","publishedAt","localeEntriesToUpdate","strapi","db","query","findMany","where","$ne","select","entryData","documents","omitComponentData","async","map","entry","transformedData","utils","transformData","cloneDeep","allowMissingId","componentData","updateComponents","update","$eq","data","Object","assign","localizations"],"mappings":";;;;;;AAMA;;IAGA,MAAMA,0BAA6B,GAAA,OAAOC,WAAkBC,EAAAA,KAAAA,GAAAA;AAC1D,IAAA,MAAM,EAAEC,0BAA0B,EAAE,GAAGC,gBAAW,CAAA,eAAA,CAAA;IAElD,MAAMC,sBAAAA,GAAyBF,2BAA2BD,KAAOD,EAAAA,WAAAA,CAAAA;AACjE,IAAA,IAAIK,WAAQD,sBAAyB,CAAA,EAAA;AACnC,QAAA;AACF;IAEA,MAAME,GAAAA,GAAML,MAAMK,GAAG;IACrB,MAAMC,UAAAA,GAAaP,YAAYO,UAAU;IACzC,MAAMC,MAAAA,GAASR,YAAYQ,MAAM;IACjC,MAAMC,MAAAA,GAAST,WAAaU,EAAAA,WAAAA,GAAc,WAAc,GAAA,OAAA;;;IAIxD,MAAMC,qBAAAA,GAAwB,MAAMC,MAAOC,CAAAA,EAAE,CAACC,KAAK,CAACR,GAAKS,CAAAA,CAAAA,QAAQ,CAAC;QAChEC,KAAO,EAAA;AACLT,YAAAA,UAAAA;AACAG,YAAAA,WAAAA,EAAaD,WAAW,WAAc,GAAA;gBAAEQ,GAAK,EAAA;aAAS,GAAA,IAAA;YACtDT,MAAQ,EAAA;gBAAES,GAAKT,EAAAA;AAAO;AACxB,SAAA;QACAU,MAAQ,EAAA;AAAC,YAAA,QAAA;AAAU,YAAA;AAAK;AAC1B,KAAA,CAAA;AAEA,IAAA,MAAMC,YAAY,MAAMP,MAAAA,CAAOQ,SAAS,CAACd,GAAAA,CAAAA,CAAKe,iBAAiB,CAACjB,sBAAAA,CAAAA;AAEhE,IAAA,MAAMkB,WAAMC,CAAAA,GAAG,CAACZ,qBAAAA,EAAuB,OAAOa,KAAAA,GAAAA;QAC5C,MAAMC,eAAAA,GAAkB,MAAMb,MAAAA,CAAOQ,SAAS,CAACM,KAAK,CAACC,aAAa,CAChEC,YAAAA,CAAUxB,sBACV,CAAA,EAAA;AACEE,YAAAA,GAAAA;AACAG,YAAAA,MAAAA;AACAD,YAAAA,MAAAA,EAAQgB,MAAMhB,MAAM;YACpBqB,cAAgB,EAAA;AAClB,SAAA,CAAA;;QAIF,MAAMC,aAAAA,GAAgB,MAAMlB,MACzBQ,CAAAA,SAAS,CAACd,GACVyB,CAAAA,CAAAA,gBAAgB,CAACP,KAAOC,EAAAA,eAAAA,CAAAA;;AAG3B,QAAA,MAAMb,OAAOC,EAAE,CAACC,KAAK,CAACR,GAAAA,CAAAA,CAAK0B,MAAM,CAAC;YAChChB,KAAO,EAAA;AACLT,gBAAAA,UAAAA;AACAG,gBAAAA,WAAAA,EAAaD,WAAW,WAAc,GAAA;oBAAEQ,GAAK,EAAA;iBAAS,GAAA,IAAA;gBACtDT,MAAQ,EAAA;AAAEyB,oBAAAA,GAAAA,EAAKT,MAAMhB;AAAO;AAC9B,aAAA;;;AAGA0B,YAAAA,IAAAA,EAAMC,MAAOC,CAAAA,MAAM,CAACR,YAAAA,CAAUT,SAAYW,CAAAA,EAAAA,aAAAA;AAC5C,SAAA,CAAA;AACF,KAAA,CAAA;AACF,CAAA;AAEMO,MAAAA,aAAAA,GAAgB,KAAO;AAC3BtC,QAAAA;KACF;;;;"}
@@ -0,0 +1,66 @@
1
+ import { isEmpty, cloneDeep } from 'lodash/fp';
2
+ import { async } from '@strapi/utils';
3
+ import { getService } from '../utils/index.mjs';
4
+
5
+ /**
6
+ * Update non localized fields of all the related localizations of an entry with the entry values
7
+ */ const syncNonLocalizedAttributes = async (sourceEntry, model)=>{
8
+ const { copyNonLocalizedAttributes } = getService('content-types');
9
+ const nonLocalizedAttributes = copyNonLocalizedAttributes(model, sourceEntry);
10
+ if (isEmpty(nonLocalizedAttributes)) {
11
+ return;
12
+ }
13
+ const uid = model.uid;
14
+ const documentId = sourceEntry.documentId;
15
+ const locale = sourceEntry.locale;
16
+ const status = sourceEntry?.publishedAt ? 'published' : 'draft';
17
+ // Find all the entries that need to be updated
18
+ // this is every other entry of the document in the same status but a different locale
19
+ const localeEntriesToUpdate = await strapi.db.query(uid).findMany({
20
+ where: {
21
+ documentId,
22
+ publishedAt: status === 'published' ? {
23
+ $ne: null
24
+ } : null,
25
+ locale: {
26
+ $ne: locale
27
+ }
28
+ },
29
+ select: [
30
+ 'locale',
31
+ 'id'
32
+ ]
33
+ });
34
+ const entryData = await strapi.documents(uid).omitComponentData(nonLocalizedAttributes);
35
+ await async.map(localeEntriesToUpdate, async (entry)=>{
36
+ const transformedData = await strapi.documents.utils.transformData(cloneDeep(nonLocalizedAttributes), {
37
+ uid,
38
+ status,
39
+ locale: entry.locale,
40
+ allowMissingId: true
41
+ });
42
+ // Update or create non localized components for the entry
43
+ const componentData = await strapi.documents(uid).updateComponents(entry, transformedData);
44
+ // Update every other locale entry of this documentId in the same status
45
+ await strapi.db.query(uid).update({
46
+ where: {
47
+ documentId,
48
+ publishedAt: status === 'published' ? {
49
+ $ne: null
50
+ } : null,
51
+ locale: {
52
+ $eq: entry.locale
53
+ }
54
+ },
55
+ // The data we send to the update function is the entry data merged with
56
+ // the updated component data
57
+ data: Object.assign(cloneDeep(entryData), componentData)
58
+ });
59
+ });
60
+ };
61
+ const localizations = ()=>({
62
+ syncNonLocalizedAttributes
63
+ });
64
+
65
+ export { localizations as default };
66
+ //# sourceMappingURL=localizations.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localizations.mjs","sources":["../../../server/src/services/localizations.ts"],"sourcesContent":["import { cloneDeep, isEmpty } from 'lodash/fp';\n\nimport type { Schema } from '@strapi/types';\nimport { async } from '@strapi/utils';\nimport { getService } from '../utils';\n\n/**\n * Update non localized fields of all the related localizations of an entry with the entry values\n */\nconst syncNonLocalizedAttributes = async (sourceEntry: any, model: Schema.ContentType) => {\n const { copyNonLocalizedAttributes } = getService('content-types');\n\n const nonLocalizedAttributes = copyNonLocalizedAttributes(model, sourceEntry);\n if (isEmpty(nonLocalizedAttributes)) {\n return;\n }\n\n const uid = model.uid;\n const documentId = sourceEntry.documentId;\n const locale = sourceEntry.locale;\n const status = sourceEntry?.publishedAt ? 'published' : 'draft';\n\n // Find all the entries that need to be updated\n // this is every other entry of the document in the same status but a different locale\n const localeEntriesToUpdate = await strapi.db.query(uid).findMany({\n where: {\n documentId,\n publishedAt: status === 'published' ? { $ne: null } : null,\n locale: { $ne: locale },\n },\n select: ['locale', 'id'],\n });\n\n const entryData = await strapi.documents(uid).omitComponentData(nonLocalizedAttributes);\n\n await async.map(localeEntriesToUpdate, async (entry: any) => {\n const transformedData = await strapi.documents.utils.transformData(\n cloneDeep(nonLocalizedAttributes),\n {\n uid,\n status,\n locale: entry.locale,\n allowMissingId: true,\n }\n );\n\n // Update or create non localized components for the entry\n const componentData = await strapi\n .documents(uid)\n .updateComponents(entry, transformedData as any);\n\n // Update every other locale entry of this documentId in the same status\n await strapi.db.query(uid).update({\n where: {\n documentId,\n publishedAt: status === 'published' ? { $ne: null } : null,\n locale: { $eq: entry.locale },\n },\n // The data we send to the update function is the entry data merged with\n // the updated component data\n data: Object.assign(cloneDeep(entryData), componentData),\n });\n });\n};\n\nconst localizations = () => ({\n syncNonLocalizedAttributes,\n});\n\ntype LocalizationsService = typeof localizations;\n\nexport default localizations;\nexport type { LocalizationsService };\n"],"names":["syncNonLocalizedAttributes","sourceEntry","model","copyNonLocalizedAttributes","getService","nonLocalizedAttributes","isEmpty","uid","documentId","locale","status","publishedAt","localeEntriesToUpdate","strapi","db","query","findMany","where","$ne","select","entryData","documents","omitComponentData","async","map","entry","transformedData","utils","transformData","cloneDeep","allowMissingId","componentData","updateComponents","update","$eq","data","Object","assign","localizations"],"mappings":";;;;AAMA;;IAGA,MAAMA,0BAA6B,GAAA,OAAOC,WAAkBC,EAAAA,KAAAA,GAAAA;AAC1D,IAAA,MAAM,EAAEC,0BAA0B,EAAE,GAAGC,UAAW,CAAA,eAAA,CAAA;IAElD,MAAMC,sBAAAA,GAAyBF,2BAA2BD,KAAOD,EAAAA,WAAAA,CAAAA;AACjE,IAAA,IAAIK,QAAQD,sBAAyB,CAAA,EAAA;AACnC,QAAA;AACF;IAEA,MAAME,GAAAA,GAAML,MAAMK,GAAG;IACrB,MAAMC,UAAAA,GAAaP,YAAYO,UAAU;IACzC,MAAMC,MAAAA,GAASR,YAAYQ,MAAM;IACjC,MAAMC,MAAAA,GAAST,WAAaU,EAAAA,WAAAA,GAAc,WAAc,GAAA,OAAA;;;IAIxD,MAAMC,qBAAAA,GAAwB,MAAMC,MAAOC,CAAAA,EAAE,CAACC,KAAK,CAACR,GAAKS,CAAAA,CAAAA,QAAQ,CAAC;QAChEC,KAAO,EAAA;AACLT,YAAAA,UAAAA;AACAG,YAAAA,WAAAA,EAAaD,WAAW,WAAc,GAAA;gBAAEQ,GAAK,EAAA;aAAS,GAAA,IAAA;YACtDT,MAAQ,EAAA;gBAAES,GAAKT,EAAAA;AAAO;AACxB,SAAA;QACAU,MAAQ,EAAA;AAAC,YAAA,QAAA;AAAU,YAAA;AAAK;AAC1B,KAAA,CAAA;AAEA,IAAA,MAAMC,YAAY,MAAMP,MAAAA,CAAOQ,SAAS,CAACd,GAAAA,CAAAA,CAAKe,iBAAiB,CAACjB,sBAAAA,CAAAA;AAEhE,IAAA,MAAMkB,KAAMC,CAAAA,GAAG,CAACZ,qBAAAA,EAAuB,OAAOa,KAAAA,GAAAA;QAC5C,MAAMC,eAAAA,GAAkB,MAAMb,MAAAA,CAAOQ,SAAS,CAACM,KAAK,CAACC,aAAa,CAChEC,SAAAA,CAAUxB,sBACV,CAAA,EAAA;AACEE,YAAAA,GAAAA;AACAG,YAAAA,MAAAA;AACAD,YAAAA,MAAAA,EAAQgB,MAAMhB,MAAM;YACpBqB,cAAgB,EAAA;AAClB,SAAA,CAAA;;QAIF,MAAMC,aAAAA,GAAgB,MAAMlB,MACzBQ,CAAAA,SAAS,CAACd,GACVyB,CAAAA,CAAAA,gBAAgB,CAACP,KAAOC,EAAAA,eAAAA,CAAAA;;AAG3B,QAAA,MAAMb,OAAOC,EAAE,CAACC,KAAK,CAACR,GAAAA,CAAAA,CAAK0B,MAAM,CAAC;YAChChB,KAAO,EAAA;AACLT,gBAAAA,UAAAA;AACAG,gBAAAA,WAAAA,EAAaD,WAAW,WAAc,GAAA;oBAAEQ,GAAK,EAAA;iBAAS,GAAA,IAAA;gBACtDT,MAAQ,EAAA;AAAEyB,oBAAAA,GAAAA,EAAKT,MAAMhB;AAAO;AAC9B,aAAA;;;AAGA0B,YAAAA,IAAAA,EAAMC,MAAOC,CAAAA,MAAM,CAACR,SAAAA,CAAUT,SAAYW,CAAAA,EAAAA,aAAAA;AAC5C,SAAA,CAAA;AACF,KAAA,CAAA;AACF,CAAA;AAEMO,MAAAA,aAAAA,GAAgB,KAAO;AAC3BtC,QAAAA;KACF;;;;"}
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ var fp = require('lodash/fp');
4
+ var index = require('../utils/index.js');
5
+
6
+ const sendDidInitializeEvent = async ()=>{
7
+ const { isLocalizedContentType } = index.getService('content-types');
8
+ // TODO: V5: This event should be renamed numberOfContentTypes in V5 as the name is already taken to describe the number of content types using i18n.
9
+ const numberOfContentTypes = fp.reduce((sum, contentType)=>isLocalizedContentType(contentType) ? sum + 1 : sum, 0)(strapi.contentTypes);
10
+ await strapi.telemetry.send('didInitializeI18n', {
11
+ groupProperties: {
12
+ numberOfContentTypes
13
+ }
14
+ });
15
+ };
16
+ const sendDidUpdateI18nLocalesEvent = async ()=>{
17
+ const numberOfLocales = await index.getService('locales').count();
18
+ await strapi.telemetry.send('didUpdateI18nLocales', {
19
+ groupProperties: {
20
+ numberOfLocales
21
+ }
22
+ });
23
+ };
24
+ const metrics = ()=>({
25
+ sendDidInitializeEvent,
26
+ sendDidUpdateI18nLocalesEvent
27
+ });
28
+
29
+ module.exports = metrics;
30
+ //# sourceMappingURL=metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.js","sources":["../../../server/src/services/metrics.ts"],"sourcesContent":["import { reduce } from 'lodash/fp';\nimport { getService } from '../utils';\n\nconst sendDidInitializeEvent = async () => {\n const { isLocalizedContentType } = getService('content-types');\n\n // TODO: V5: This event should be renamed numberOfContentTypes in V5 as the name is already taken to describe the number of content types using i18n.\n const numberOfContentTypes = reduce(\n (sum, contentType) => (isLocalizedContentType(contentType) ? sum + 1 : sum),\n 0\n )(strapi.contentTypes as any);\n\n await strapi.telemetry.send('didInitializeI18n', { groupProperties: { numberOfContentTypes } });\n};\n\nconst sendDidUpdateI18nLocalesEvent = async () => {\n const numberOfLocales = await getService('locales').count();\n\n await strapi.telemetry.send('didUpdateI18nLocales', {\n groupProperties: { numberOfLocales },\n });\n};\n\nconst metrics = () => ({\n sendDidInitializeEvent,\n sendDidUpdateI18nLocalesEvent,\n});\n\ntype MetricsService = typeof metrics;\n\nexport default metrics;\nexport type { MetricsService };\n"],"names":["sendDidInitializeEvent","isLocalizedContentType","getService","numberOfContentTypes","reduce","sum","contentType","strapi","contentTypes","telemetry","send","groupProperties","sendDidUpdateI18nLocalesEvent","numberOfLocales","count","metrics"],"mappings":";;;;;AAGA,MAAMA,sBAAyB,GAAA,UAAA;AAC7B,IAAA,MAAM,EAAEC,sBAAsB,EAAE,GAAGC,gBAAW,CAAA,eAAA,CAAA;;AAG9C,IAAA,MAAMC,oBAAuBC,GAAAA,SAAAA,CAC3B,CAACC,GAAAA,EAAKC,WAAiBL,GAAAA,sBAAAA,CAAuBK,WAAeD,CAAAA,GAAAA,GAAAA,GAAM,CAAIA,GAAAA,GAAAA,EACvE,CACAE,CAAAA,CAAAA,MAAAA,CAAOC,YAAY,CAAA;AAErB,IAAA,MAAMD,MAAOE,CAAAA,SAAS,CAACC,IAAI,CAAC,mBAAqB,EAAA;QAAEC,eAAiB,EAAA;AAAER,YAAAA;AAAqB;AAAE,KAAA,CAAA;AAC/F,CAAA;AAEA,MAAMS,6BAAgC,GAAA,UAAA;AACpC,IAAA,MAAMC,eAAkB,GAAA,MAAMX,gBAAW,CAAA,SAAA,CAAA,CAAWY,KAAK,EAAA;AAEzD,IAAA,MAAMP,MAAOE,CAAAA,SAAS,CAACC,IAAI,CAAC,sBAAwB,EAAA;QAClDC,eAAiB,EAAA;AAAEE,YAAAA;AAAgB;AACrC,KAAA,CAAA;AACF,CAAA;AAEME,MAAAA,OAAAA,GAAU,KAAO;AACrBf,QAAAA,sBAAAA;AACAY,QAAAA;KACF;;;;"}
@@ -0,0 +1,28 @@
1
+ import { reduce } from 'lodash/fp';
2
+ import { getService } from '../utils/index.mjs';
3
+
4
+ const sendDidInitializeEvent = async ()=>{
5
+ const { isLocalizedContentType } = getService('content-types');
6
+ // TODO: V5: This event should be renamed numberOfContentTypes in V5 as the name is already taken to describe the number of content types using i18n.
7
+ const numberOfContentTypes = reduce((sum, contentType)=>isLocalizedContentType(contentType) ? sum + 1 : sum, 0)(strapi.contentTypes);
8
+ await strapi.telemetry.send('didInitializeI18n', {
9
+ groupProperties: {
10
+ numberOfContentTypes
11
+ }
12
+ });
13
+ };
14
+ const sendDidUpdateI18nLocalesEvent = async ()=>{
15
+ const numberOfLocales = await getService('locales').count();
16
+ await strapi.telemetry.send('didUpdateI18nLocales', {
17
+ groupProperties: {
18
+ numberOfLocales
19
+ }
20
+ });
21
+ };
22
+ const metrics = ()=>({
23
+ sendDidInitializeEvent,
24
+ sendDidUpdateI18nLocalesEvent
25
+ });
26
+
27
+ export { metrics as default };
28
+ //# sourceMappingURL=metrics.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.mjs","sources":["../../../server/src/services/metrics.ts"],"sourcesContent":["import { reduce } from 'lodash/fp';\nimport { getService } from '../utils';\n\nconst sendDidInitializeEvent = async () => {\n const { isLocalizedContentType } = getService('content-types');\n\n // TODO: V5: This event should be renamed numberOfContentTypes in V5 as the name is already taken to describe the number of content types using i18n.\n const numberOfContentTypes = reduce(\n (sum, contentType) => (isLocalizedContentType(contentType) ? sum + 1 : sum),\n 0\n )(strapi.contentTypes as any);\n\n await strapi.telemetry.send('didInitializeI18n', { groupProperties: { numberOfContentTypes } });\n};\n\nconst sendDidUpdateI18nLocalesEvent = async () => {\n const numberOfLocales = await getService('locales').count();\n\n await strapi.telemetry.send('didUpdateI18nLocales', {\n groupProperties: { numberOfLocales },\n });\n};\n\nconst metrics = () => ({\n sendDidInitializeEvent,\n sendDidUpdateI18nLocalesEvent,\n});\n\ntype MetricsService = typeof metrics;\n\nexport default metrics;\nexport type { MetricsService };\n"],"names":["sendDidInitializeEvent","isLocalizedContentType","getService","numberOfContentTypes","reduce","sum","contentType","strapi","contentTypes","telemetry","send","groupProperties","sendDidUpdateI18nLocalesEvent","numberOfLocales","count","metrics"],"mappings":";;;AAGA,MAAMA,sBAAyB,GAAA,UAAA;AAC7B,IAAA,MAAM,EAAEC,sBAAsB,EAAE,GAAGC,UAAW,CAAA,eAAA,CAAA;;AAG9C,IAAA,MAAMC,oBAAuBC,GAAAA,MAAAA,CAC3B,CAACC,GAAAA,EAAKC,WAAiBL,GAAAA,sBAAAA,CAAuBK,WAAeD,CAAAA,GAAAA,GAAAA,GAAM,CAAIA,GAAAA,GAAAA,EACvE,CACAE,CAAAA,CAAAA,MAAAA,CAAOC,YAAY,CAAA;AAErB,IAAA,MAAMD,MAAOE,CAAAA,SAAS,CAACC,IAAI,CAAC,mBAAqB,EAAA;QAAEC,eAAiB,EAAA;AAAER,YAAAA;AAAqB;AAAE,KAAA,CAAA;AAC/F,CAAA;AAEA,MAAMS,6BAAgC,GAAA,UAAA;AACpC,IAAA,MAAMC,eAAkB,GAAA,MAAMX,UAAW,CAAA,SAAA,CAAA,CAAWY,KAAK,EAAA;AAEzD,IAAA,MAAMP,MAAOE,CAAAA,SAAS,CAACC,IAAI,CAAC,sBAAwB,EAAA;QAClDC,eAAiB,EAAA;AAAEE,YAAAA;AAAgB;AACrC,KAAA,CAAA;AACF,CAAA;AAEME,MAAAA,OAAAA,GAAU,KAAO;AACrBf,QAAAA,sBAAAA;AACAY,QAAAA;KACF;;;;"}
@@ -0,0 +1,136 @@
1
+ 'use strict';
2
+
3
+ var fp = require('lodash/fp');
4
+ var index = require('../../utils/index.js');
5
+
6
+ const actions = [
7
+ {
8
+ section: 'settings',
9
+ category: 'Internationalization',
10
+ subCategory: 'Locales',
11
+ pluginName: 'i18n',
12
+ displayName: 'Create',
13
+ uid: 'locale.create'
14
+ },
15
+ {
16
+ section: 'settings',
17
+ category: 'Internationalization',
18
+ subCategory: 'Locales',
19
+ pluginName: 'i18n',
20
+ displayName: 'Read',
21
+ uid: 'locale.read',
22
+ aliases: [
23
+ {
24
+ actionId: 'plugin::content-manager.explorer.read',
25
+ subjects: [
26
+ 'plugin::i18n.locale'
27
+ ]
28
+ }
29
+ ]
30
+ },
31
+ {
32
+ section: 'settings',
33
+ category: 'Internationalization',
34
+ subCategory: 'Locales',
35
+ pluginName: 'i18n',
36
+ displayName: 'Update',
37
+ uid: 'locale.update'
38
+ },
39
+ {
40
+ section: 'settings',
41
+ category: 'Internationalization',
42
+ subCategory: 'Locales',
43
+ pluginName: 'i18n',
44
+ displayName: 'Delete',
45
+ uid: 'locale.delete'
46
+ }
47
+ ];
48
+ const addLocalesPropertyIfNeeded = ({ value: action })=>{
49
+ const { section, options: { applyToProperties } } = action;
50
+ // Only add the locales property to contentTypes' actions
51
+ if (section !== 'contentTypes') {
52
+ return;
53
+ }
54
+ // If the 'locales' property is already declared within the applyToProperties array, then ignore the next steps
55
+ if (fp.isArray(applyToProperties) && applyToProperties.includes('locales')) {
56
+ return;
57
+ }
58
+ // Add the 'locales' property to the applyToProperties array (create it if necessary)
59
+ action.options.applyToProperties = fp.isArray(applyToProperties) ? applyToProperties.concat('locales') : [
60
+ 'locales'
61
+ ];
62
+ };
63
+ const shouldApplyLocalesPropertyToSubject = ({ property, subject })=>{
64
+ if (property === 'locales') {
65
+ const model = strapi.getModel(subject);
66
+ return index.getService('content-types').isLocalizedContentType(model);
67
+ }
68
+ return true;
69
+ };
70
+ const addAllLocalesToPermissions = async (permissions)=>{
71
+ const { actionProvider } = strapi.service('admin::permission');
72
+ const { find: findAllLocales } = index.getService('locales');
73
+ const allLocales = await findAllLocales();
74
+ const allLocalesCode = allLocales.map(fp.prop('code'));
75
+ return Promise.all(permissions.map(async (permission)=>{
76
+ const { action, subject } = permission;
77
+ const appliesToLocalesProperty = await actionProvider.appliesToProperty('locales', action, subject);
78
+ if (!appliesToLocalesProperty) {
79
+ return permission;
80
+ }
81
+ const oldPermissionProperties = fp.getOr({}, 'properties', permission);
82
+ return {
83
+ ...permission,
84
+ properties: {
85
+ ...oldPermissionProperties,
86
+ locales: allLocalesCode
87
+ }
88
+ };
89
+ }));
90
+ };
91
+ const syncSuperAdminPermissionsWithLocales = async ()=>{
92
+ const roleService = strapi.service('admin::role');
93
+ const permissionService = strapi.service('admin::permission');
94
+ const superAdminRole = await roleService.getSuperAdmin();
95
+ if (!superAdminRole) {
96
+ return;
97
+ }
98
+ const superAdminPermissions = await permissionService.findMany({
99
+ where: {
100
+ role: {
101
+ id: superAdminRole.id
102
+ }
103
+ }
104
+ });
105
+ const newSuperAdminPermissions = await addAllLocalesToPermissions(superAdminPermissions);
106
+ await roleService.assignPermissions(superAdminRole.id, newSuperAdminPermissions);
107
+ };
108
+ const registerI18nActions = async ()=>{
109
+ const { actionProvider } = strapi.service('admin::permission');
110
+ await actionProvider.registerMany(actions);
111
+ };
112
+ const registerI18nActionsHooks = ()=>{
113
+ const { actionProvider } = strapi.service('admin::permission');
114
+ const { hooks } = strapi.service('admin::role');
115
+ actionProvider.hooks.appliesPropertyToSubject.register(shouldApplyLocalesPropertyToSubject);
116
+ hooks.willResetSuperAdminPermissions.register(addAllLocalesToPermissions);
117
+ };
118
+ const updateActionsProperties = ()=>{
119
+ const { actionProvider } = strapi.service('admin::permission');
120
+ // Register the transformation for every new action
121
+ actionProvider.hooks.willRegister.register(addLocalesPropertyIfNeeded);
122
+ // Handle already registered actions
123
+ actionProvider.values().forEach((action)=>addLocalesPropertyIfNeeded({
124
+ value: action
125
+ }));
126
+ };
127
+ var i18nActionsService = {
128
+ actions,
129
+ registerI18nActions,
130
+ registerI18nActionsHooks,
131
+ updateActionsProperties,
132
+ syncSuperAdminPermissionsWithLocales
133
+ };
134
+
135
+ module.exports = i18nActionsService;
136
+ //# sourceMappingURL=actions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"actions.js","sources":["../../../../server/src/services/permissions/actions.ts"],"sourcesContent":["import { isArray, getOr, prop } from 'lodash/fp';\nimport { getService } from '../../utils';\n\nconst actions = [\n {\n section: 'settings',\n category: 'Internationalization',\n subCategory: 'Locales',\n pluginName: 'i18n',\n displayName: 'Create',\n uid: 'locale.create',\n },\n {\n section: 'settings',\n category: 'Internationalization',\n subCategory: 'Locales',\n pluginName: 'i18n',\n displayName: 'Read',\n uid: 'locale.read',\n aliases: [\n { actionId: 'plugin::content-manager.explorer.read', subjects: ['plugin::i18n.locale'] },\n ],\n },\n {\n section: 'settings',\n category: 'Internationalization',\n subCategory: 'Locales',\n pluginName: 'i18n',\n displayName: 'Update',\n uid: 'locale.update',\n },\n {\n section: 'settings',\n category: 'Internationalization',\n subCategory: 'Locales',\n pluginName: 'i18n',\n displayName: 'Delete',\n uid: 'locale.delete',\n },\n];\n\nconst addLocalesPropertyIfNeeded = ({ value: action }: any) => {\n const {\n section,\n options: { applyToProperties },\n } = action;\n\n // Only add the locales property to contentTypes' actions\n if (section !== 'contentTypes') {\n return;\n }\n\n // If the 'locales' property is already declared within the applyToProperties array, then ignore the next steps\n if (isArray(applyToProperties) && applyToProperties.includes('locales')) {\n return;\n }\n\n // Add the 'locales' property to the applyToProperties array (create it if necessary)\n action.options.applyToProperties = isArray(applyToProperties)\n ? applyToProperties.concat('locales')\n : ['locales'];\n};\n\nconst shouldApplyLocalesPropertyToSubject = ({ property, subject }: any) => {\n if (property === 'locales') {\n const model = strapi.getModel(subject);\n\n return getService('content-types').isLocalizedContentType(model);\n }\n\n return true;\n};\n\nconst addAllLocalesToPermissions = async (permissions: any) => {\n const { actionProvider } = strapi.service('admin::permission');\n const { find: findAllLocales } = getService('locales');\n\n const allLocales = await findAllLocales();\n const allLocalesCode = allLocales.map(prop('code'));\n\n return Promise.all(\n permissions.map(async (permission: any) => {\n const { action, subject } = permission;\n\n const appliesToLocalesProperty = await actionProvider.appliesToProperty(\n 'locales',\n action,\n subject\n );\n\n if (!appliesToLocalesProperty) {\n return permission;\n }\n\n const oldPermissionProperties = getOr({}, 'properties', permission);\n\n return { ...permission, properties: { ...oldPermissionProperties, locales: allLocalesCode } };\n })\n );\n};\n\nconst syncSuperAdminPermissionsWithLocales = async () => {\n const roleService = strapi.service('admin::role');\n const permissionService = strapi.service('admin::permission');\n\n const superAdminRole = await roleService.getSuperAdmin();\n\n if (!superAdminRole) {\n return;\n }\n\n const superAdminPermissions = await permissionService.findMany({\n where: {\n role: {\n id: superAdminRole.id,\n },\n },\n });\n\n const newSuperAdminPermissions = await addAllLocalesToPermissions(superAdminPermissions);\n\n await roleService.assignPermissions(superAdminRole.id, newSuperAdminPermissions);\n};\n\nconst registerI18nActions = async () => {\n const { actionProvider } = strapi.service('admin::permission');\n\n await actionProvider.registerMany(actions);\n};\n\nconst registerI18nActionsHooks = () => {\n const { actionProvider } = strapi.service('admin::permission');\n const { hooks } = strapi.service('admin::role');\n\n actionProvider.hooks.appliesPropertyToSubject.register(shouldApplyLocalesPropertyToSubject);\n hooks.willResetSuperAdminPermissions.register(addAllLocalesToPermissions);\n};\n\nconst updateActionsProperties = () => {\n const { actionProvider } = strapi.service('admin::permission');\n\n // Register the transformation for every new action\n actionProvider.hooks.willRegister.register(addLocalesPropertyIfNeeded);\n\n // Handle already registered actions\n actionProvider.values().forEach((action: any) => addLocalesPropertyIfNeeded({ value: action }));\n};\n\nexport default {\n actions,\n registerI18nActions,\n registerI18nActionsHooks,\n updateActionsProperties,\n syncSuperAdminPermissionsWithLocales,\n};\n"],"names":["actions","section","category","subCategory","pluginName","displayName","uid","aliases","actionId","subjects","addLocalesPropertyIfNeeded","value","action","options","applyToProperties","isArray","includes","concat","shouldApplyLocalesPropertyToSubject","property","subject","model","strapi","getModel","getService","isLocalizedContentType","addAllLocalesToPermissions","permissions","actionProvider","service","find","findAllLocales","allLocales","allLocalesCode","map","prop","Promise","all","permission","appliesToLocalesProperty","appliesToProperty","oldPermissionProperties","getOr","properties","locales","syncSuperAdminPermissionsWithLocales","roleService","permissionService","superAdminRole","getSuperAdmin","superAdminPermissions","findMany","where","role","id","newSuperAdminPermissions","assignPermissions","registerI18nActions","registerMany","registerI18nActionsHooks","hooks","appliesPropertyToSubject","register","willResetSuperAdminPermissions","updateActionsProperties","willRegister","values","forEach"],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ import { isArray, prop, getOr } from 'lodash/fp';
2
+ import { getService } from '../../utils/index.mjs';
3
+
4
+ const actions = [
5
+ {
6
+ section: 'settings',
7
+ category: 'Internationalization',
8
+ subCategory: 'Locales',
9
+ pluginName: 'i18n',
10
+ displayName: 'Create',
11
+ uid: 'locale.create'
12
+ },
13
+ {
14
+ section: 'settings',
15
+ category: 'Internationalization',
16
+ subCategory: 'Locales',
17
+ pluginName: 'i18n',
18
+ displayName: 'Read',
19
+ uid: 'locale.read',
20
+ aliases: [
21
+ {
22
+ actionId: 'plugin::content-manager.explorer.read',
23
+ subjects: [
24
+ 'plugin::i18n.locale'
25
+ ]
26
+ }
27
+ ]
28
+ },
29
+ {
30
+ section: 'settings',
31
+ category: 'Internationalization',
32
+ subCategory: 'Locales',
33
+ pluginName: 'i18n',
34
+ displayName: 'Update',
35
+ uid: 'locale.update'
36
+ },
37
+ {
38
+ section: 'settings',
39
+ category: 'Internationalization',
40
+ subCategory: 'Locales',
41
+ pluginName: 'i18n',
42
+ displayName: 'Delete',
43
+ uid: 'locale.delete'
44
+ }
45
+ ];
46
+ const addLocalesPropertyIfNeeded = ({ value: action })=>{
47
+ const { section, options: { applyToProperties } } = action;
48
+ // Only add the locales property to contentTypes' actions
49
+ if (section !== 'contentTypes') {
50
+ return;
51
+ }
52
+ // If the 'locales' property is already declared within the applyToProperties array, then ignore the next steps
53
+ if (isArray(applyToProperties) && applyToProperties.includes('locales')) {
54
+ return;
55
+ }
56
+ // Add the 'locales' property to the applyToProperties array (create it if necessary)
57
+ action.options.applyToProperties = isArray(applyToProperties) ? applyToProperties.concat('locales') : [
58
+ 'locales'
59
+ ];
60
+ };
61
+ const shouldApplyLocalesPropertyToSubject = ({ property, subject })=>{
62
+ if (property === 'locales') {
63
+ const model = strapi.getModel(subject);
64
+ return getService('content-types').isLocalizedContentType(model);
65
+ }
66
+ return true;
67
+ };
68
+ const addAllLocalesToPermissions = async (permissions)=>{
69
+ const { actionProvider } = strapi.service('admin::permission');
70
+ const { find: findAllLocales } = getService('locales');
71
+ const allLocales = await findAllLocales();
72
+ const allLocalesCode = allLocales.map(prop('code'));
73
+ return Promise.all(permissions.map(async (permission)=>{
74
+ const { action, subject } = permission;
75
+ const appliesToLocalesProperty = await actionProvider.appliesToProperty('locales', action, subject);
76
+ if (!appliesToLocalesProperty) {
77
+ return permission;
78
+ }
79
+ const oldPermissionProperties = getOr({}, 'properties', permission);
80
+ return {
81
+ ...permission,
82
+ properties: {
83
+ ...oldPermissionProperties,
84
+ locales: allLocalesCode
85
+ }
86
+ };
87
+ }));
88
+ };
89
+ const syncSuperAdminPermissionsWithLocales = async ()=>{
90
+ const roleService = strapi.service('admin::role');
91
+ const permissionService = strapi.service('admin::permission');
92
+ const superAdminRole = await roleService.getSuperAdmin();
93
+ if (!superAdminRole) {
94
+ return;
95
+ }
96
+ const superAdminPermissions = await permissionService.findMany({
97
+ where: {
98
+ role: {
99
+ id: superAdminRole.id
100
+ }
101
+ }
102
+ });
103
+ const newSuperAdminPermissions = await addAllLocalesToPermissions(superAdminPermissions);
104
+ await roleService.assignPermissions(superAdminRole.id, newSuperAdminPermissions);
105
+ };
106
+ const registerI18nActions = async ()=>{
107
+ const { actionProvider } = strapi.service('admin::permission');
108
+ await actionProvider.registerMany(actions);
109
+ };
110
+ const registerI18nActionsHooks = ()=>{
111
+ const { actionProvider } = strapi.service('admin::permission');
112
+ const { hooks } = strapi.service('admin::role');
113
+ actionProvider.hooks.appliesPropertyToSubject.register(shouldApplyLocalesPropertyToSubject);
114
+ hooks.willResetSuperAdminPermissions.register(addAllLocalesToPermissions);
115
+ };
116
+ const updateActionsProperties = ()=>{
117
+ const { actionProvider } = strapi.service('admin::permission');
118
+ // Register the transformation for every new action
119
+ actionProvider.hooks.willRegister.register(addLocalesPropertyIfNeeded);
120
+ // Handle already registered actions
121
+ actionProvider.values().forEach((action)=>addLocalesPropertyIfNeeded({
122
+ value: action
123
+ }));
124
+ };
125
+ var i18nActionsService = {
126
+ actions,
127
+ registerI18nActions,
128
+ registerI18nActionsHooks,
129
+ updateActionsProperties,
130
+ syncSuperAdminPermissionsWithLocales
131
+ };
132
+
133
+ export { i18nActionsService as default };
134
+ //# sourceMappingURL=actions.mjs.map