@strapi/i18n 5.55.1 → 5.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  const createStrapiManagedAiTranslationsProvider = ({ strapi })=>{
4
- // TODO: add a helper function to get the AI server URL
4
+ // TODO(ai): add a helper function to get the AI server URL
5
5
  const aiServerUrl = process.env.STRAPI_AI_URL || 'https://strapi-ai.apps.strapi.io';
6
6
  const getAiToken = async ()=>{
7
7
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"ai-translations-strapi-managed.js","sources":["../../../server/src/services/ai-translations-strapi-managed.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport type { AiTranslationsProvider } from './ai-translations';\n\nconst createStrapiManagedAiTranslationsProvider = ({\n strapi,\n}: {\n strapi: Core.Strapi;\n}): AiTranslationsProvider => {\n // TODO: add a helper function to get the AI server URL\n const aiServerUrl = process.env.STRAPI_AI_URL || 'https://strapi-ai.apps.strapi.io';\n\n const getAiToken = async () => {\n try {\n const { token } = await strapi.ai.admin.getAiToken();\n return token;\n } catch (error) {\n throw new Error('Failed to retrieve AI token', {\n cause: error instanceof Error ? error : undefined,\n });\n }\n };\n\n return {\n name: 'strapi-managed',\n\n async generateTranslations({ sourceLocale, targetLocales, content, contentTypeSchema }) {\n const token = await getAiToken();\n\n strapi.log.http('Contacting AI Server for localizations generation');\n const response = await fetch(`${aiServerUrl}/i18n/generate-localizations`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`,\n },\n body: JSON.stringify({\n content,\n sourceLocale,\n targetLocales,\n contentTypeSchema,\n }),\n });\n\n if (!response.ok) {\n strapi.log.error(\n `AI Localizations request failed: ${response.status} ${response.statusText}`\n );\n\n throw new Error(`AI Localizations request failed: ${response.statusText}`);\n }\n\n return (await response.json()) as Awaited<\n ReturnType<AiTranslationsProvider['generateTranslations']>\n >;\n },\n };\n};\n\nexport { createStrapiManagedAiTranslationsProvider };\n"],"names":["createStrapiManagedAiTranslationsProvider","strapi","aiServerUrl","process","env","STRAPI_AI_URL","getAiToken","token","ai","admin","error","Error","cause","undefined","name","generateTranslations","sourceLocale","targetLocales","content","contentTypeSchema","log","http","response","fetch","method","headers","Authorization","body","JSON","stringify","ok","status","statusText","json"],"mappings":";;AAIA,MAAMA,yCAAAA,GAA4C,CAAC,EACjDC,MAAM,EAGP,GAAA;;AAEC,IAAA,MAAMC,WAAAA,GAAcC,OAAAA,CAAQC,GAAG,CAACC,aAAa,IAAI,kCAAA;AAEjD,IAAA,MAAMC,UAAAA,GAAa,UAAA;QACjB,IAAI;YACF,MAAM,EAAEC,KAAK,EAAE,GAAG,MAAMN,OAAOO,EAAE,CAACC,KAAK,CAACH,UAAU,EAAA;YAClD,OAAOC,KAAAA;AACT,QAAA,CAAA,CAAE,OAAOG,KAAAA,EAAO;YACd,MAAM,IAAIC,MAAM,6BAAA,EAA+B;gBAC7CC,KAAAA,EAAOF,KAAAA,YAAiBC,QAAQD,KAAAA,GAAQG;AAC1C,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;IAEA,OAAO;QACLC,IAAAA,EAAM,gBAAA;QAEN,MAAMC,oBAAAA,CAAAA,CAAqB,EAAEC,YAAY,EAAEC,aAAa,EAAEC,OAAO,EAAEC,iBAAiB,EAAE,EAAA;AACpF,YAAA,MAAMZ,QAAQ,MAAMD,UAAAA,EAAAA;YAEpBL,MAAAA,CAAOmB,GAAG,CAACC,IAAI,CAAC,mDAAA,CAAA;AAChB,YAAA,MAAMC,WAAW,MAAMC,KAAAA,CAAM,GAAGrB,WAAAA,CAAY,4BAA4B,CAAC,EAAE;gBACzEsB,MAAAA,EAAQ,MAAA;gBACRC,OAAAA,EAAS;oBACP,cAAA,EAAgB,kBAAA;oBAChBC,aAAAA,EAAe,CAAC,OAAO,EAAEnB,KAAAA,CAAAA;AAC3B,iBAAA;gBACAoB,IAAAA,EAAMC,IAAAA,CAAKC,SAAS,CAAC;AACnBX,oBAAAA,OAAAA;AACAF,oBAAAA,YAAAA;AACAC,oBAAAA,aAAAA;AACAE,oBAAAA;AACF,iBAAA;AACF,aAAA,CAAA;YAEA,IAAI,CAACG,QAAAA,CAASQ,EAAE,EAAE;AAChB7B,gBAAAA,MAAAA,CAAOmB,GAAG,CAACV,KAAK,CACd,CAAC,iCAAiC,EAAEY,QAAAA,CAASS,MAAM,CAAC,CAAC,EAAET,QAAAA,CAASU,UAAU,CAAA,CAAE,CAAA;AAG9E,gBAAA,MAAM,IAAIrB,KAAAA,CAAM,CAAC,iCAAiC,EAAEW,QAAAA,CAASU,UAAU,CAAA,CAAE,CAAA;AAC3E,YAAA;YAEA,OAAQ,MAAMV,SAASW,IAAI,EAAA;AAG7B,QAAA;AACF,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"ai-translations-strapi-managed.js","sources":["../../../server/src/services/ai-translations-strapi-managed.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport type { AiTranslationsProvider } from './ai-translations';\n\nconst createStrapiManagedAiTranslationsProvider = ({\n strapi,\n}: {\n strapi: Core.Strapi;\n}): AiTranslationsProvider => {\n // TODO(ai): add a helper function to get the AI server URL\n const aiServerUrl = process.env.STRAPI_AI_URL || 'https://strapi-ai.apps.strapi.io';\n\n const getAiToken = async () => {\n try {\n const { token } = await strapi.ai.admin.getAiToken();\n return token;\n } catch (error) {\n throw new Error('Failed to retrieve AI token', {\n cause: error instanceof Error ? error : undefined,\n });\n }\n };\n\n return {\n name: 'strapi-managed',\n\n async generateTranslations({ sourceLocale, targetLocales, content, contentTypeSchema }) {\n const token = await getAiToken();\n\n strapi.log.http('Contacting AI Server for localizations generation');\n const response = await fetch(`${aiServerUrl}/i18n/generate-localizations`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`,\n },\n body: JSON.stringify({\n content,\n sourceLocale,\n targetLocales,\n contentTypeSchema,\n }),\n });\n\n if (!response.ok) {\n strapi.log.error(\n `AI Localizations request failed: ${response.status} ${response.statusText}`\n );\n\n throw new Error(`AI Localizations request failed: ${response.statusText}`);\n }\n\n return (await response.json()) as Awaited<\n ReturnType<AiTranslationsProvider['generateTranslations']>\n >;\n },\n };\n};\n\nexport { createStrapiManagedAiTranslationsProvider };\n"],"names":["createStrapiManagedAiTranslationsProvider","strapi","aiServerUrl","process","env","STRAPI_AI_URL","getAiToken","token","ai","admin","error","Error","cause","undefined","name","generateTranslations","sourceLocale","targetLocales","content","contentTypeSchema","log","http","response","fetch","method","headers","Authorization","body","JSON","stringify","ok","status","statusText","json"],"mappings":";;AAIA,MAAMA,yCAAAA,GAA4C,CAAC,EACjDC,MAAM,EAGP,GAAA;;AAEC,IAAA,MAAMC,WAAAA,GAAcC,OAAAA,CAAQC,GAAG,CAACC,aAAa,IAAI,kCAAA;AAEjD,IAAA,MAAMC,UAAAA,GAAa,UAAA;QACjB,IAAI;YACF,MAAM,EAAEC,KAAK,EAAE,GAAG,MAAMN,OAAOO,EAAE,CAACC,KAAK,CAACH,UAAU,EAAA;YAClD,OAAOC,KAAAA;AACT,QAAA,CAAA,CAAE,OAAOG,KAAAA,EAAO;YACd,MAAM,IAAIC,MAAM,6BAAA,EAA+B;gBAC7CC,KAAAA,EAAOF,KAAAA,YAAiBC,QAAQD,KAAAA,GAAQG;AAC1C,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;IAEA,OAAO;QACLC,IAAAA,EAAM,gBAAA;QAEN,MAAMC,oBAAAA,CAAAA,CAAqB,EAAEC,YAAY,EAAEC,aAAa,EAAEC,OAAO,EAAEC,iBAAiB,EAAE,EAAA;AACpF,YAAA,MAAMZ,QAAQ,MAAMD,UAAAA,EAAAA;YAEpBL,MAAAA,CAAOmB,GAAG,CAACC,IAAI,CAAC,mDAAA,CAAA;AAChB,YAAA,MAAMC,WAAW,MAAMC,KAAAA,CAAM,GAAGrB,WAAAA,CAAY,4BAA4B,CAAC,EAAE;gBACzEsB,MAAAA,EAAQ,MAAA;gBACRC,OAAAA,EAAS;oBACP,cAAA,EAAgB,kBAAA;oBAChBC,aAAAA,EAAe,CAAC,OAAO,EAAEnB,KAAAA,CAAAA;AAC3B,iBAAA;gBACAoB,IAAAA,EAAMC,IAAAA,CAAKC,SAAS,CAAC;AACnBX,oBAAAA,OAAAA;AACAF,oBAAAA,YAAAA;AACAC,oBAAAA,aAAAA;AACAE,oBAAAA;AACF,iBAAA;AACF,aAAA,CAAA;YAEA,IAAI,CAACG,QAAAA,CAASQ,EAAE,EAAE;AAChB7B,gBAAAA,MAAAA,CAAOmB,GAAG,CAACV,KAAK,CACd,CAAC,iCAAiC,EAAEY,QAAAA,CAASS,MAAM,CAAC,CAAC,EAAET,QAAAA,CAASU,UAAU,CAAA,CAAE,CAAA;AAG9E,gBAAA,MAAM,IAAIrB,KAAAA,CAAM,CAAC,iCAAiC,EAAEW,QAAAA,CAASU,UAAU,CAAA,CAAE,CAAA;AAC3E,YAAA;YAEA,OAAQ,MAAMV,SAASW,IAAI,EAAA;AAG7B,QAAA;AACF,KAAA;AACF;;;;"}
@@ -1,5 +1,5 @@
1
1
  const createStrapiManagedAiTranslationsProvider = ({ strapi })=>{
2
- // TODO: add a helper function to get the AI server URL
2
+ // TODO(ai): add a helper function to get the AI server URL
3
3
  const aiServerUrl = process.env.STRAPI_AI_URL || 'https://strapi-ai.apps.strapi.io';
4
4
  const getAiToken = async ()=>{
5
5
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"ai-translations-strapi-managed.mjs","sources":["../../../server/src/services/ai-translations-strapi-managed.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport type { AiTranslationsProvider } from './ai-translations';\n\nconst createStrapiManagedAiTranslationsProvider = ({\n strapi,\n}: {\n strapi: Core.Strapi;\n}): AiTranslationsProvider => {\n // TODO: add a helper function to get the AI server URL\n const aiServerUrl = process.env.STRAPI_AI_URL || 'https://strapi-ai.apps.strapi.io';\n\n const getAiToken = async () => {\n try {\n const { token } = await strapi.ai.admin.getAiToken();\n return token;\n } catch (error) {\n throw new Error('Failed to retrieve AI token', {\n cause: error instanceof Error ? error : undefined,\n });\n }\n };\n\n return {\n name: 'strapi-managed',\n\n async generateTranslations({ sourceLocale, targetLocales, content, contentTypeSchema }) {\n const token = await getAiToken();\n\n strapi.log.http('Contacting AI Server for localizations generation');\n const response = await fetch(`${aiServerUrl}/i18n/generate-localizations`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`,\n },\n body: JSON.stringify({\n content,\n sourceLocale,\n targetLocales,\n contentTypeSchema,\n }),\n });\n\n if (!response.ok) {\n strapi.log.error(\n `AI Localizations request failed: ${response.status} ${response.statusText}`\n );\n\n throw new Error(`AI Localizations request failed: ${response.statusText}`);\n }\n\n return (await response.json()) as Awaited<\n ReturnType<AiTranslationsProvider['generateTranslations']>\n >;\n },\n };\n};\n\nexport { createStrapiManagedAiTranslationsProvider };\n"],"names":["createStrapiManagedAiTranslationsProvider","strapi","aiServerUrl","process","env","STRAPI_AI_URL","getAiToken","token","ai","admin","error","Error","cause","undefined","name","generateTranslations","sourceLocale","targetLocales","content","contentTypeSchema","log","http","response","fetch","method","headers","Authorization","body","JSON","stringify","ok","status","statusText","json"],"mappings":"AAIA,MAAMA,yCAAAA,GAA4C,CAAC,EACjDC,MAAM,EAGP,GAAA;;AAEC,IAAA,MAAMC,WAAAA,GAAcC,OAAAA,CAAQC,GAAG,CAACC,aAAa,IAAI,kCAAA;AAEjD,IAAA,MAAMC,UAAAA,GAAa,UAAA;QACjB,IAAI;YACF,MAAM,EAAEC,KAAK,EAAE,GAAG,MAAMN,OAAOO,EAAE,CAACC,KAAK,CAACH,UAAU,EAAA;YAClD,OAAOC,KAAAA;AACT,QAAA,CAAA,CAAE,OAAOG,KAAAA,EAAO;YACd,MAAM,IAAIC,MAAM,6BAAA,EAA+B;gBAC7CC,KAAAA,EAAOF,KAAAA,YAAiBC,QAAQD,KAAAA,GAAQG;AAC1C,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;IAEA,OAAO;QACLC,IAAAA,EAAM,gBAAA;QAEN,MAAMC,oBAAAA,CAAAA,CAAqB,EAAEC,YAAY,EAAEC,aAAa,EAAEC,OAAO,EAAEC,iBAAiB,EAAE,EAAA;AACpF,YAAA,MAAMZ,QAAQ,MAAMD,UAAAA,EAAAA;YAEpBL,MAAAA,CAAOmB,GAAG,CAACC,IAAI,CAAC,mDAAA,CAAA;AAChB,YAAA,MAAMC,WAAW,MAAMC,KAAAA,CAAM,GAAGrB,WAAAA,CAAY,4BAA4B,CAAC,EAAE;gBACzEsB,MAAAA,EAAQ,MAAA;gBACRC,OAAAA,EAAS;oBACP,cAAA,EAAgB,kBAAA;oBAChBC,aAAAA,EAAe,CAAC,OAAO,EAAEnB,KAAAA,CAAAA;AAC3B,iBAAA;gBACAoB,IAAAA,EAAMC,IAAAA,CAAKC,SAAS,CAAC;AACnBX,oBAAAA,OAAAA;AACAF,oBAAAA,YAAAA;AACAC,oBAAAA,aAAAA;AACAE,oBAAAA;AACF,iBAAA;AACF,aAAA,CAAA;YAEA,IAAI,CAACG,QAAAA,CAASQ,EAAE,EAAE;AAChB7B,gBAAAA,MAAAA,CAAOmB,GAAG,CAACV,KAAK,CACd,CAAC,iCAAiC,EAAEY,QAAAA,CAASS,MAAM,CAAC,CAAC,EAAET,QAAAA,CAASU,UAAU,CAAA,CAAE,CAAA;AAG9E,gBAAA,MAAM,IAAIrB,KAAAA,CAAM,CAAC,iCAAiC,EAAEW,QAAAA,CAASU,UAAU,CAAA,CAAE,CAAA;AAC3E,YAAA;YAEA,OAAQ,MAAMV,SAASW,IAAI,EAAA;AAG7B,QAAA;AACF,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"ai-translations-strapi-managed.mjs","sources":["../../../server/src/services/ai-translations-strapi-managed.ts"],"sourcesContent":["import type { Core } from '@strapi/types';\n\nimport type { AiTranslationsProvider } from './ai-translations';\n\nconst createStrapiManagedAiTranslationsProvider = ({\n strapi,\n}: {\n strapi: Core.Strapi;\n}): AiTranslationsProvider => {\n // TODO(ai): add a helper function to get the AI server URL\n const aiServerUrl = process.env.STRAPI_AI_URL || 'https://strapi-ai.apps.strapi.io';\n\n const getAiToken = async () => {\n try {\n const { token } = await strapi.ai.admin.getAiToken();\n return token;\n } catch (error) {\n throw new Error('Failed to retrieve AI token', {\n cause: error instanceof Error ? error : undefined,\n });\n }\n };\n\n return {\n name: 'strapi-managed',\n\n async generateTranslations({ sourceLocale, targetLocales, content, contentTypeSchema }) {\n const token = await getAiToken();\n\n strapi.log.http('Contacting AI Server for localizations generation');\n const response = await fetch(`${aiServerUrl}/i18n/generate-localizations`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${token}`,\n },\n body: JSON.stringify({\n content,\n sourceLocale,\n targetLocales,\n contentTypeSchema,\n }),\n });\n\n if (!response.ok) {\n strapi.log.error(\n `AI Localizations request failed: ${response.status} ${response.statusText}`\n );\n\n throw new Error(`AI Localizations request failed: ${response.statusText}`);\n }\n\n return (await response.json()) as Awaited<\n ReturnType<AiTranslationsProvider['generateTranslations']>\n >;\n },\n };\n};\n\nexport { createStrapiManagedAiTranslationsProvider };\n"],"names":["createStrapiManagedAiTranslationsProvider","strapi","aiServerUrl","process","env","STRAPI_AI_URL","getAiToken","token","ai","admin","error","Error","cause","undefined","name","generateTranslations","sourceLocale","targetLocales","content","contentTypeSchema","log","http","response","fetch","method","headers","Authorization","body","JSON","stringify","ok","status","statusText","json"],"mappings":"AAIA,MAAMA,yCAAAA,GAA4C,CAAC,EACjDC,MAAM,EAGP,GAAA;;AAEC,IAAA,MAAMC,WAAAA,GAAcC,OAAAA,CAAQC,GAAG,CAACC,aAAa,IAAI,kCAAA;AAEjD,IAAA,MAAMC,UAAAA,GAAa,UAAA;QACjB,IAAI;YACF,MAAM,EAAEC,KAAK,EAAE,GAAG,MAAMN,OAAOO,EAAE,CAACC,KAAK,CAACH,UAAU,EAAA;YAClD,OAAOC,KAAAA;AACT,QAAA,CAAA,CAAE,OAAOG,KAAAA,EAAO;YACd,MAAM,IAAIC,MAAM,6BAAA,EAA+B;gBAC7CC,KAAAA,EAAOF,KAAAA,YAAiBC,QAAQD,KAAAA,GAAQG;AAC1C,aAAA,CAAA;AACF,QAAA;AACF,IAAA,CAAA;IAEA,OAAO;QACLC,IAAAA,EAAM,gBAAA;QAEN,MAAMC,oBAAAA,CAAAA,CAAqB,EAAEC,YAAY,EAAEC,aAAa,EAAEC,OAAO,EAAEC,iBAAiB,EAAE,EAAA;AACpF,YAAA,MAAMZ,QAAQ,MAAMD,UAAAA,EAAAA;YAEpBL,MAAAA,CAAOmB,GAAG,CAACC,IAAI,CAAC,mDAAA,CAAA;AAChB,YAAA,MAAMC,WAAW,MAAMC,KAAAA,CAAM,GAAGrB,WAAAA,CAAY,4BAA4B,CAAC,EAAE;gBACzEsB,MAAAA,EAAQ,MAAA;gBACRC,OAAAA,EAAS;oBACP,cAAA,EAAgB,kBAAA;oBAChBC,aAAAA,EAAe,CAAC,OAAO,EAAEnB,KAAAA,CAAAA;AAC3B,iBAAA;gBACAoB,IAAAA,EAAMC,IAAAA,CAAKC,SAAS,CAAC;AACnBX,oBAAAA,OAAAA;AACAF,oBAAAA,YAAAA;AACAC,oBAAAA,aAAAA;AACAE,oBAAAA;AACF,iBAAA;AACF,aAAA,CAAA;YAEA,IAAI,CAACG,QAAAA,CAASQ,EAAE,EAAE;AAChB7B,gBAAAA,MAAAA,CAAOmB,GAAG,CAACV,KAAK,CACd,CAAC,iCAAiC,EAAEY,QAAAA,CAASS,MAAM,CAAC,CAAC,EAAET,QAAAA,CAASU,UAAU,CAAA,CAAE,CAAA;AAG9E,gBAAA,MAAM,IAAIrB,KAAAA,CAAM,CAAC,iCAAiC,EAAEW,QAAAA,CAASU,UAAU,CAAA,CAAE,CAAA;AAC3E,YAAA;YAEA,OAAQ,MAAMV,SAASW,IAAI,EAAA;AAG7B,QAAA;AACF,KAAA;AACF;;;;"}
@@ -2,6 +2,8 @@
2
2
 
3
3
  var aiTranslationsStrapiManaged = require('./ai-translations-strapi-managed.js');
4
4
 
5
+ // This service mirrors upload's ai-metadata-provider service on purpose. Keep the two in
6
+ // sync, and only extract the shared logic once a third feature needs it.
5
7
  const createAITranslationsService = ({ strapi })=>{
6
8
  let registeredProvider = null;
7
9
  const resolveProvider = ()=>{
@@ -1 +1 @@
1
- {"version":3,"file":"ai-translations.js","sources":["../../../server/src/services/ai-translations.ts"],"sourcesContent":["import type { Core, Modules } from '@strapi/types';\nimport { createStrapiManagedAiTranslationsProvider } from './ai-translations-strapi-managed';\n\nexport type GenerateTranslationsParams = {\n sourceLocale: string;\n targetLocales: string[];\n content: Record<string, unknown>;\n contentTypeSchema: Record<string, Record<string, unknown>>;\n};\n\nexport type GenerateTranslationsResult = {\n localizations: Array<{ content: Record<string, unknown>; locale: string }>;\n};\n\nexport type AiTranslationsProvider = Modules.AI.AiProvider & {\n generateTranslations: (params: GenerateTranslationsParams) => Promise<GenerateTranslationsResult>;\n};\n\nexport interface AiTranslationsService {\n hasProvider(): boolean;\n registerProvider(params: { provider: AiTranslationsProvider }): void;\n registerStrapiManagedProvider(): void;\n generateTranslations(params: GenerateTranslationsParams): Promise<GenerateTranslationsResult>;\n}\n\nconst createAITranslationsService = ({\n strapi,\n}: {\n strapi: Core.Strapi;\n}): AiTranslationsService => {\n let registeredProvider: AiTranslationsProvider | null = null;\n\n const resolveProvider = (): AiTranslationsProvider | null => {\n if (!strapi.ai.admin.isAvailable()) {\n return null;\n }\n\n return registeredProvider;\n };\n\n return {\n hasProvider(): boolean {\n return resolveProvider() !== null;\n },\n\n registerProvider({ provider }: { provider: AiTranslationsProvider }) {\n if (!strapi.ai.admin.authorizeCustomProvider()) {\n return;\n }\n\n if (registeredProvider !== null) {\n throw new Error(\n `The AI translations provider \"${registeredProvider.name}\" is already registered, \"${provider.name}\" cannot replace it.`\n );\n }\n\n registeredProvider = provider;\n },\n\n registerStrapiManagedProvider() {\n if (!strapi.ai.admin.isStrapiManagedAiEnabled()) {\n strapi.log.warn(\n 'The Strapi-managed AI translations provider was ignored: the Strapi license does not include the \"cms-ai\" feature.'\n );\n return;\n }\n\n const provider = createStrapiManagedAiTranslationsProvider({ strapi });\n\n if (registeredProvider !== null) {\n throw new Error(\n `The AI translations provider \"${registeredProvider.name}\" is already registered, \"${provider.name}\" cannot replace it.`\n );\n }\n\n registeredProvider = provider;\n },\n\n async generateTranslations(\n params: GenerateTranslationsParams\n ): Promise<GenerateTranslationsResult> {\n const provider = resolveProvider();\n\n if (provider === null) {\n throw new Error('No AI translations provider is registered.');\n }\n\n return provider.generateTranslations(params);\n },\n };\n};\n\nexport { createAITranslationsService };\n"],"names":["createAITranslationsService","strapi","registeredProvider","resolveProvider","ai","admin","isAvailable","hasProvider","registerProvider","provider","authorizeCustomProvider","Error","name","registerStrapiManagedProvider","isStrapiManagedAiEnabled","log","warn","createStrapiManagedAiTranslationsProvider","generateTranslations","params"],"mappings":";;;;AAyBA,MAAMA,2BAAAA,GAA8B,CAAC,EACnCC,MAAM,EAGP,GAAA;AACC,IAAA,IAAIC,kBAAAA,GAAoD,IAAA;AAExD,IAAA,MAAMC,eAAAA,GAAkB,IAAA;AACtB,QAAA,IAAI,CAACF,MAAAA,CAAOG,EAAE,CAACC,KAAK,CAACC,WAAW,EAAA,EAAI;YAClC,OAAO,IAAA;AACT,QAAA;QAEA,OAAOJ,kBAAAA;AACT,IAAA,CAAA;IAEA,OAAO;AACLK,QAAAA,WAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOJ,eAAAA,EAAAA,KAAsB,IAAA;AAC/B,QAAA,CAAA;QAEAK,gBAAAA,CAAAA,CAAiB,EAAEC,QAAQ,EAAwC,EAAA;AACjE,YAAA,IAAI,CAACR,MAAAA,CAAOG,EAAE,CAACC,KAAK,CAACK,uBAAuB,EAAA,EAAI;AAC9C,gBAAA;AACF,YAAA;AAEA,YAAA,IAAIR,uBAAuB,IAAA,EAAM;AAC/B,gBAAA,MAAM,IAAIS,KAAAA,CACR,CAAC,8BAA8B,EAAET,kBAAAA,CAAmBU,IAAI,CAAC,0BAA0B,EAAEH,QAAAA,CAASG,IAAI,CAAC,oBAAoB,CAAC,CAAA;AAE5H,YAAA;YAEAV,kBAAAA,GAAqBO,QAAAA;AACvB,QAAA,CAAA;AAEAI,QAAAA,6BAAAA,CAAAA,GAAAA;AACE,YAAA,IAAI,CAACZ,MAAAA,CAAOG,EAAE,CAACC,KAAK,CAACS,wBAAwB,EAAA,EAAI;gBAC/Cb,MAAAA,CAAOc,GAAG,CAACC,IAAI,CACb,oHAAA,CAAA;AAEF,gBAAA;AACF,YAAA;AAEA,YAAA,MAAMP,WAAWQ,qEAAAA,CAA0C;AAAEhB,gBAAAA;AAAO,aAAA,CAAA;AAEpE,YAAA,IAAIC,uBAAuB,IAAA,EAAM;AAC/B,gBAAA,MAAM,IAAIS,KAAAA,CACR,CAAC,8BAA8B,EAAET,kBAAAA,CAAmBU,IAAI,CAAC,0BAA0B,EAAEH,QAAAA,CAASG,IAAI,CAAC,oBAAoB,CAAC,CAAA;AAE5H,YAAA;YAEAV,kBAAAA,GAAqBO,QAAAA;AACvB,QAAA,CAAA;AAEA,QAAA,MAAMS,sBACJC,MAAkC,EAAA;AAElC,YAAA,MAAMV,QAAAA,GAAWN,eAAAA,EAAAA;AAEjB,YAAA,IAAIM,aAAa,IAAA,EAAM;AACrB,gBAAA,MAAM,IAAIE,KAAAA,CAAM,4CAAA,CAAA;AAClB,YAAA;YAEA,OAAOF,QAAAA,CAASS,oBAAoB,CAACC,MAAAA,CAAAA;AACvC,QAAA;AACF,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"ai-translations.js","sources":["../../../server/src/services/ai-translations.ts"],"sourcesContent":["import type { Core, Modules } from '@strapi/types';\nimport { createStrapiManagedAiTranslationsProvider } from './ai-translations-strapi-managed';\n\nexport type GenerateTranslationsParams = {\n sourceLocale: string;\n targetLocales: string[];\n content: Record<string, unknown>;\n contentTypeSchema: Record<string, Record<string, unknown>>;\n};\n\nexport type GenerateTranslationsResult = {\n localizations: Array<{ content: Record<string, unknown>; locale: string }>;\n};\n\nexport type AiTranslationsProvider = Modules.AI.AiProvider & {\n generateTranslations: (params: GenerateTranslationsParams) => Promise<GenerateTranslationsResult>;\n};\n\nexport interface AiTranslationsService {\n hasProvider(): boolean;\n registerProvider(params: { provider: AiTranslationsProvider }): void;\n registerStrapiManagedProvider(): void;\n generateTranslations(params: GenerateTranslationsParams): Promise<GenerateTranslationsResult>;\n}\n\n// This service mirrors upload's ai-metadata-provider service on purpose. Keep the two in\n// sync, and only extract the shared logic once a third feature needs it.\nconst createAITranslationsService = ({\n strapi,\n}: {\n strapi: Core.Strapi;\n}): AiTranslationsService => {\n let registeredProvider: AiTranslationsProvider | null = null;\n\n const resolveProvider = (): AiTranslationsProvider | null => {\n if (!strapi.ai.admin.isAvailable()) {\n return null;\n }\n\n return registeredProvider;\n };\n\n return {\n hasProvider(): boolean {\n return resolveProvider() !== null;\n },\n\n registerProvider({ provider }: { provider: AiTranslationsProvider }) {\n if (!strapi.ai.admin.authorizeCustomProvider()) {\n return;\n }\n\n if (registeredProvider !== null) {\n throw new Error(\n `The AI translations provider \"${registeredProvider.name}\" is already registered, \"${provider.name}\" cannot replace it.`\n );\n }\n\n registeredProvider = provider;\n },\n\n registerStrapiManagedProvider() {\n if (!strapi.ai.admin.isStrapiManagedAiEnabled()) {\n strapi.log.warn(\n 'The Strapi-managed AI translations provider was ignored: the Strapi license does not include the \"cms-ai\" feature.'\n );\n return;\n }\n\n const provider = createStrapiManagedAiTranslationsProvider({ strapi });\n\n if (registeredProvider !== null) {\n throw new Error(\n `The AI translations provider \"${registeredProvider.name}\" is already registered, \"${provider.name}\" cannot replace it.`\n );\n }\n\n registeredProvider = provider;\n },\n\n async generateTranslations(\n params: GenerateTranslationsParams\n ): Promise<GenerateTranslationsResult> {\n const provider = resolveProvider();\n\n if (provider === null) {\n throw new Error('No AI translations provider is registered.');\n }\n\n return provider.generateTranslations(params);\n },\n };\n};\n\nexport { createAITranslationsService };\n"],"names":["createAITranslationsService","strapi","registeredProvider","resolveProvider","ai","admin","isAvailable","hasProvider","registerProvider","provider","authorizeCustomProvider","Error","name","registerStrapiManagedProvider","isStrapiManagedAiEnabled","log","warn","createStrapiManagedAiTranslationsProvider","generateTranslations","params"],"mappings":";;;;AAyBA;AACA;AACA,MAAMA,2BAAAA,GAA8B,CAAC,EACnCC,MAAM,EAGP,GAAA;AACC,IAAA,IAAIC,kBAAAA,GAAoD,IAAA;AAExD,IAAA,MAAMC,eAAAA,GAAkB,IAAA;AACtB,QAAA,IAAI,CAACF,MAAAA,CAAOG,EAAE,CAACC,KAAK,CAACC,WAAW,EAAA,EAAI;YAClC,OAAO,IAAA;AACT,QAAA;QAEA,OAAOJ,kBAAAA;AACT,IAAA,CAAA;IAEA,OAAO;AACLK,QAAAA,WAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOJ,eAAAA,EAAAA,KAAsB,IAAA;AAC/B,QAAA,CAAA;QAEAK,gBAAAA,CAAAA,CAAiB,EAAEC,QAAQ,EAAwC,EAAA;AACjE,YAAA,IAAI,CAACR,MAAAA,CAAOG,EAAE,CAACC,KAAK,CAACK,uBAAuB,EAAA,EAAI;AAC9C,gBAAA;AACF,YAAA;AAEA,YAAA,IAAIR,uBAAuB,IAAA,EAAM;AAC/B,gBAAA,MAAM,IAAIS,KAAAA,CACR,CAAC,8BAA8B,EAAET,kBAAAA,CAAmBU,IAAI,CAAC,0BAA0B,EAAEH,QAAAA,CAASG,IAAI,CAAC,oBAAoB,CAAC,CAAA;AAE5H,YAAA;YAEAV,kBAAAA,GAAqBO,QAAAA;AACvB,QAAA,CAAA;AAEAI,QAAAA,6BAAAA,CAAAA,GAAAA;AACE,YAAA,IAAI,CAACZ,MAAAA,CAAOG,EAAE,CAACC,KAAK,CAACS,wBAAwB,EAAA,EAAI;gBAC/Cb,MAAAA,CAAOc,GAAG,CAACC,IAAI,CACb,oHAAA,CAAA;AAEF,gBAAA;AACF,YAAA;AAEA,YAAA,MAAMP,WAAWQ,qEAAAA,CAA0C;AAAEhB,gBAAAA;AAAO,aAAA,CAAA;AAEpE,YAAA,IAAIC,uBAAuB,IAAA,EAAM;AAC/B,gBAAA,MAAM,IAAIS,KAAAA,CACR,CAAC,8BAA8B,EAAET,kBAAAA,CAAmBU,IAAI,CAAC,0BAA0B,EAAEH,QAAAA,CAASG,IAAI,CAAC,oBAAoB,CAAC,CAAA;AAE5H,YAAA;YAEAV,kBAAAA,GAAqBO,QAAAA;AACvB,QAAA,CAAA;AAEA,QAAA,MAAMS,sBACJC,MAAkC,EAAA;AAElC,YAAA,MAAMV,QAAAA,GAAWN,eAAAA,EAAAA;AAEjB,YAAA,IAAIM,aAAa,IAAA,EAAM;AACrB,gBAAA,MAAM,IAAIE,KAAAA,CAAM,4CAAA,CAAA;AAClB,YAAA;YAEA,OAAOF,QAAAA,CAASS,oBAAoB,CAACC,MAAAA,CAAAA;AACvC,QAAA;AACF,KAAA;AACF;;;;"}
@@ -1,5 +1,7 @@
1
1
  import { createStrapiManagedAiTranslationsProvider } from './ai-translations-strapi-managed.mjs';
2
2
 
3
+ // This service mirrors upload's ai-metadata-provider service on purpose. Keep the two in
4
+ // sync, and only extract the shared logic once a third feature needs it.
3
5
  const createAITranslationsService = ({ strapi })=>{
4
6
  let registeredProvider = null;
5
7
  const resolveProvider = ()=>{
@@ -1 +1 @@
1
- {"version":3,"file":"ai-translations.mjs","sources":["../../../server/src/services/ai-translations.ts"],"sourcesContent":["import type { Core, Modules } from '@strapi/types';\nimport { createStrapiManagedAiTranslationsProvider } from './ai-translations-strapi-managed';\n\nexport type GenerateTranslationsParams = {\n sourceLocale: string;\n targetLocales: string[];\n content: Record<string, unknown>;\n contentTypeSchema: Record<string, Record<string, unknown>>;\n};\n\nexport type GenerateTranslationsResult = {\n localizations: Array<{ content: Record<string, unknown>; locale: string }>;\n};\n\nexport type AiTranslationsProvider = Modules.AI.AiProvider & {\n generateTranslations: (params: GenerateTranslationsParams) => Promise<GenerateTranslationsResult>;\n};\n\nexport interface AiTranslationsService {\n hasProvider(): boolean;\n registerProvider(params: { provider: AiTranslationsProvider }): void;\n registerStrapiManagedProvider(): void;\n generateTranslations(params: GenerateTranslationsParams): Promise<GenerateTranslationsResult>;\n}\n\nconst createAITranslationsService = ({\n strapi,\n}: {\n strapi: Core.Strapi;\n}): AiTranslationsService => {\n let registeredProvider: AiTranslationsProvider | null = null;\n\n const resolveProvider = (): AiTranslationsProvider | null => {\n if (!strapi.ai.admin.isAvailable()) {\n return null;\n }\n\n return registeredProvider;\n };\n\n return {\n hasProvider(): boolean {\n return resolveProvider() !== null;\n },\n\n registerProvider({ provider }: { provider: AiTranslationsProvider }) {\n if (!strapi.ai.admin.authorizeCustomProvider()) {\n return;\n }\n\n if (registeredProvider !== null) {\n throw new Error(\n `The AI translations provider \"${registeredProvider.name}\" is already registered, \"${provider.name}\" cannot replace it.`\n );\n }\n\n registeredProvider = provider;\n },\n\n registerStrapiManagedProvider() {\n if (!strapi.ai.admin.isStrapiManagedAiEnabled()) {\n strapi.log.warn(\n 'The Strapi-managed AI translations provider was ignored: the Strapi license does not include the \"cms-ai\" feature.'\n );\n return;\n }\n\n const provider = createStrapiManagedAiTranslationsProvider({ strapi });\n\n if (registeredProvider !== null) {\n throw new Error(\n `The AI translations provider \"${registeredProvider.name}\" is already registered, \"${provider.name}\" cannot replace it.`\n );\n }\n\n registeredProvider = provider;\n },\n\n async generateTranslations(\n params: GenerateTranslationsParams\n ): Promise<GenerateTranslationsResult> {\n const provider = resolveProvider();\n\n if (provider === null) {\n throw new Error('No AI translations provider is registered.');\n }\n\n return provider.generateTranslations(params);\n },\n };\n};\n\nexport { createAITranslationsService };\n"],"names":["createAITranslationsService","strapi","registeredProvider","resolveProvider","ai","admin","isAvailable","hasProvider","registerProvider","provider","authorizeCustomProvider","Error","name","registerStrapiManagedProvider","isStrapiManagedAiEnabled","log","warn","createStrapiManagedAiTranslationsProvider","generateTranslations","params"],"mappings":";;AAyBA,MAAMA,2BAAAA,GAA8B,CAAC,EACnCC,MAAM,EAGP,GAAA;AACC,IAAA,IAAIC,kBAAAA,GAAoD,IAAA;AAExD,IAAA,MAAMC,eAAAA,GAAkB,IAAA;AACtB,QAAA,IAAI,CAACF,MAAAA,CAAOG,EAAE,CAACC,KAAK,CAACC,WAAW,EAAA,EAAI;YAClC,OAAO,IAAA;AACT,QAAA;QAEA,OAAOJ,kBAAAA;AACT,IAAA,CAAA;IAEA,OAAO;AACLK,QAAAA,WAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOJ,eAAAA,EAAAA,KAAsB,IAAA;AAC/B,QAAA,CAAA;QAEAK,gBAAAA,CAAAA,CAAiB,EAAEC,QAAQ,EAAwC,EAAA;AACjE,YAAA,IAAI,CAACR,MAAAA,CAAOG,EAAE,CAACC,KAAK,CAACK,uBAAuB,EAAA,EAAI;AAC9C,gBAAA;AACF,YAAA;AAEA,YAAA,IAAIR,uBAAuB,IAAA,EAAM;AAC/B,gBAAA,MAAM,IAAIS,KAAAA,CACR,CAAC,8BAA8B,EAAET,kBAAAA,CAAmBU,IAAI,CAAC,0BAA0B,EAAEH,QAAAA,CAASG,IAAI,CAAC,oBAAoB,CAAC,CAAA;AAE5H,YAAA;YAEAV,kBAAAA,GAAqBO,QAAAA;AACvB,QAAA,CAAA;AAEAI,QAAAA,6BAAAA,CAAAA,GAAAA;AACE,YAAA,IAAI,CAACZ,MAAAA,CAAOG,EAAE,CAACC,KAAK,CAACS,wBAAwB,EAAA,EAAI;gBAC/Cb,MAAAA,CAAOc,GAAG,CAACC,IAAI,CACb,oHAAA,CAAA;AAEF,gBAAA;AACF,YAAA;AAEA,YAAA,MAAMP,WAAWQ,yCAAAA,CAA0C;AAAEhB,gBAAAA;AAAO,aAAA,CAAA;AAEpE,YAAA,IAAIC,uBAAuB,IAAA,EAAM;AAC/B,gBAAA,MAAM,IAAIS,KAAAA,CACR,CAAC,8BAA8B,EAAET,kBAAAA,CAAmBU,IAAI,CAAC,0BAA0B,EAAEH,QAAAA,CAASG,IAAI,CAAC,oBAAoB,CAAC,CAAA;AAE5H,YAAA;YAEAV,kBAAAA,GAAqBO,QAAAA;AACvB,QAAA,CAAA;AAEA,QAAA,MAAMS,sBACJC,MAAkC,EAAA;AAElC,YAAA,MAAMV,QAAAA,GAAWN,eAAAA,EAAAA;AAEjB,YAAA,IAAIM,aAAa,IAAA,EAAM;AACrB,gBAAA,MAAM,IAAIE,KAAAA,CAAM,4CAAA,CAAA;AAClB,YAAA;YAEA,OAAOF,QAAAA,CAASS,oBAAoB,CAACC,MAAAA,CAAAA;AACvC,QAAA;AACF,KAAA;AACF;;;;"}
1
+ {"version":3,"file":"ai-translations.mjs","sources":["../../../server/src/services/ai-translations.ts"],"sourcesContent":["import type { Core, Modules } from '@strapi/types';\nimport { createStrapiManagedAiTranslationsProvider } from './ai-translations-strapi-managed';\n\nexport type GenerateTranslationsParams = {\n sourceLocale: string;\n targetLocales: string[];\n content: Record<string, unknown>;\n contentTypeSchema: Record<string, Record<string, unknown>>;\n};\n\nexport type GenerateTranslationsResult = {\n localizations: Array<{ content: Record<string, unknown>; locale: string }>;\n};\n\nexport type AiTranslationsProvider = Modules.AI.AiProvider & {\n generateTranslations: (params: GenerateTranslationsParams) => Promise<GenerateTranslationsResult>;\n};\n\nexport interface AiTranslationsService {\n hasProvider(): boolean;\n registerProvider(params: { provider: AiTranslationsProvider }): void;\n registerStrapiManagedProvider(): void;\n generateTranslations(params: GenerateTranslationsParams): Promise<GenerateTranslationsResult>;\n}\n\n// This service mirrors upload's ai-metadata-provider service on purpose. Keep the two in\n// sync, and only extract the shared logic once a third feature needs it.\nconst createAITranslationsService = ({\n strapi,\n}: {\n strapi: Core.Strapi;\n}): AiTranslationsService => {\n let registeredProvider: AiTranslationsProvider | null = null;\n\n const resolveProvider = (): AiTranslationsProvider | null => {\n if (!strapi.ai.admin.isAvailable()) {\n return null;\n }\n\n return registeredProvider;\n };\n\n return {\n hasProvider(): boolean {\n return resolveProvider() !== null;\n },\n\n registerProvider({ provider }: { provider: AiTranslationsProvider }) {\n if (!strapi.ai.admin.authorizeCustomProvider()) {\n return;\n }\n\n if (registeredProvider !== null) {\n throw new Error(\n `The AI translations provider \"${registeredProvider.name}\" is already registered, \"${provider.name}\" cannot replace it.`\n );\n }\n\n registeredProvider = provider;\n },\n\n registerStrapiManagedProvider() {\n if (!strapi.ai.admin.isStrapiManagedAiEnabled()) {\n strapi.log.warn(\n 'The Strapi-managed AI translations provider was ignored: the Strapi license does not include the \"cms-ai\" feature.'\n );\n return;\n }\n\n const provider = createStrapiManagedAiTranslationsProvider({ strapi });\n\n if (registeredProvider !== null) {\n throw new Error(\n `The AI translations provider \"${registeredProvider.name}\" is already registered, \"${provider.name}\" cannot replace it.`\n );\n }\n\n registeredProvider = provider;\n },\n\n async generateTranslations(\n params: GenerateTranslationsParams\n ): Promise<GenerateTranslationsResult> {\n const provider = resolveProvider();\n\n if (provider === null) {\n throw new Error('No AI translations provider is registered.');\n }\n\n return provider.generateTranslations(params);\n },\n };\n};\n\nexport { createAITranslationsService };\n"],"names":["createAITranslationsService","strapi","registeredProvider","resolveProvider","ai","admin","isAvailable","hasProvider","registerProvider","provider","authorizeCustomProvider","Error","name","registerStrapiManagedProvider","isStrapiManagedAiEnabled","log","warn","createStrapiManagedAiTranslationsProvider","generateTranslations","params"],"mappings":";;AAyBA;AACA;AACA,MAAMA,2BAAAA,GAA8B,CAAC,EACnCC,MAAM,EAGP,GAAA;AACC,IAAA,IAAIC,kBAAAA,GAAoD,IAAA;AAExD,IAAA,MAAMC,eAAAA,GAAkB,IAAA;AACtB,QAAA,IAAI,CAACF,MAAAA,CAAOG,EAAE,CAACC,KAAK,CAACC,WAAW,EAAA,EAAI;YAClC,OAAO,IAAA;AACT,QAAA;QAEA,OAAOJ,kBAAAA;AACT,IAAA,CAAA;IAEA,OAAO;AACLK,QAAAA,WAAAA,CAAAA,GAAAA;AACE,YAAA,OAAOJ,eAAAA,EAAAA,KAAsB,IAAA;AAC/B,QAAA,CAAA;QAEAK,gBAAAA,CAAAA,CAAiB,EAAEC,QAAQ,EAAwC,EAAA;AACjE,YAAA,IAAI,CAACR,MAAAA,CAAOG,EAAE,CAACC,KAAK,CAACK,uBAAuB,EAAA,EAAI;AAC9C,gBAAA;AACF,YAAA;AAEA,YAAA,IAAIR,uBAAuB,IAAA,EAAM;AAC/B,gBAAA,MAAM,IAAIS,KAAAA,CACR,CAAC,8BAA8B,EAAET,kBAAAA,CAAmBU,IAAI,CAAC,0BAA0B,EAAEH,QAAAA,CAASG,IAAI,CAAC,oBAAoB,CAAC,CAAA;AAE5H,YAAA;YAEAV,kBAAAA,GAAqBO,QAAAA;AACvB,QAAA,CAAA;AAEAI,QAAAA,6BAAAA,CAAAA,GAAAA;AACE,YAAA,IAAI,CAACZ,MAAAA,CAAOG,EAAE,CAACC,KAAK,CAACS,wBAAwB,EAAA,EAAI;gBAC/Cb,MAAAA,CAAOc,GAAG,CAACC,IAAI,CACb,oHAAA,CAAA;AAEF,gBAAA;AACF,YAAA;AAEA,YAAA,MAAMP,WAAWQ,yCAAAA,CAA0C;AAAEhB,gBAAAA;AAAO,aAAA,CAAA;AAEpE,YAAA,IAAIC,uBAAuB,IAAA,EAAM;AAC/B,gBAAA,MAAM,IAAIS,KAAAA,CACR,CAAC,8BAA8B,EAAET,kBAAAA,CAAmBU,IAAI,CAAC,0BAA0B,EAAEH,QAAAA,CAASG,IAAI,CAAC,oBAAoB,CAAC,CAAA;AAE5H,YAAA;YAEAV,kBAAAA,GAAqBO,QAAAA;AACvB,QAAA,CAAA;AAEA,QAAA,MAAMS,sBACJC,MAAkC,EAAA;AAElC,YAAA,MAAMV,QAAAA,GAAWN,eAAAA,EAAAA;AAEjB,YAAA,IAAIM,aAAa,IAAA,EAAM;AACrB,gBAAA,MAAM,IAAIE,KAAAA,CAAM,4CAAA,CAAA;AAClB,YAAA;YAEA,OAAOF,QAAAA,CAASS,oBAAoB,CAACC,MAAAA,CAAAA;AACvC,QAAA;AACF,KAAA;AACF;;;;"}
@@ -1 +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"}
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;AAID,QAAA,MAAM,2BAA2B,GAAI,aAElC;IACD,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;CACrB,KAAG,qBA6DH,CAAC;AAEF,OAAO,EAAE,2BAA2B,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@strapi/i18n",
3
- "version": "5.55.1",
3
+ "version": "5.56.0",
4
4
  "description": "Create read and update content in different languages, both from the Admin Panel and from the API",
5
5
  "homepage": "https://strapi.io",
6
6
  "bugs": {
@@ -54,6 +54,7 @@
54
54
  "clean": "run -T rimraf ./dist",
55
55
  "lint": "run -T eslint . --max-warnings=0",
56
56
  "test:front": "run -T cross-env IS_EE=true jest --config ./jest.config.front.js",
57
+ "test:ts:back": "run -T tsc -p server/tsconfig.json",
57
58
  "test:ts:front": "run -T tsc -p admin/tsconfig.json",
58
59
  "test:unit": "run -T jest",
59
60
  "test:unit:watch": "run -T jest --watch",
@@ -63,20 +64,20 @@
63
64
  "@reduxjs/toolkit": "1.9.7",
64
65
  "@strapi/design-system": "2.2.4",
65
66
  "@strapi/icons": "2.2.4",
66
- "@strapi/utils": "5.55.1",
67
+ "@strapi/utils": "5.56.0",
67
68
  "lodash": "4.18.1",
68
- "qs": "6.15.3",
69
+ "qs": "6.16.0",
69
70
  "react-intl": "6.6.2",
70
71
  "react-redux": "8.1.3",
71
72
  "yup": "0.32.9",
72
73
  "zod": "4.4.3"
73
74
  },
74
75
  "devDependencies": {
75
- "@strapi/admin": "5.55.1",
76
- "@strapi/admin-test-utils": "5.55.1",
77
- "@strapi/content-manager": "5.55.1",
78
- "@strapi/database": "5.55.1",
79
- "@strapi/types": "5.55.1",
76
+ "@strapi/admin": "5.56.0",
77
+ "@strapi/admin-test-utils": "5.56.0",
78
+ "@strapi/content-manager": "5.56.0",
79
+ "@strapi/database": "5.56.0",
80
+ "@strapi/types": "5.56.0",
80
81
  "@testing-library/dom": "10.4.1",
81
82
  "@testing-library/jest-dom": "6.9.1",
82
83
  "@testing-library/react": "16.3.2",
@@ -89,14 +90,14 @@
89
90
  "react": "18.3.1",
90
91
  "react-dom": "18.3.1",
91
92
  "react-query": "3.39.3",
92
- "react-router-dom": "6.30.4",
93
+ "react-router-dom": "6.30.6",
93
94
  "styled-components": "6.4.1"
94
95
  },
95
96
  "peerDependencies": {
96
97
  "@strapi/admin": "^5.0.0",
97
98
  "@strapi/content-manager": "^5.0.0",
98
- "react": "^17.0.0 || ^18.0.0",
99
- "react-dom": "^17.0.0 || ^18.0.0",
99
+ "react": "^18.0.0",
100
+ "react-dom": "^18.0.0",
100
101
  "react-router-dom": "^6.30.3",
101
102
  "styled-components": "^6.0.0"
102
103
  },