codicent-app-sdk 0.6.2 → 0.6.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"useLocalization.d.ts","sourceRoot":"","sources":["../../../src/hooks/useLocalization.ts"],"names":[],"mappings":"AAOA,UAAU,cAAc;IACtB,MAAM,EAAE,cAAc,GAAG,WAAW,GAAG,iBAAiB,GAAG,SAAS,GAAG,SAAS,CAAC;IACjF,QAAQ,EAAE,MAAM,CAAC;CAClB;AA6GD,eAAO,MAAM,gBAAgB,YAAiB,CAAC;AAa/C,QAAA,MAAM,eAAe;aA2CX,MAAM;kBAkFA,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;;+BApGC,MAAM;;;CA2K9C,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"useLocalization.d.ts","sourceRoot":"","sources":["../../../src/hooks/useLocalization.ts"],"names":[],"mappings":"AAOA,UAAU,cAAc;IACtB,MAAM,EAAE,cAAc,GAAG,WAAW,GAAG,iBAAiB,GAAG,SAAS,GAAG,SAAS,CAAC;IACjF,QAAQ,EAAE,MAAM,CAAC;CAClB;AA6GD,eAAO,MAAM,gBAAgB,YAAiB,CAAC;AAa/C,QAAA,MAAM,eAAe;aAgDX,MAAM;kBAkFA,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;;+BApGC,MAAM;;;CA2K9C,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../node_modules/i18next/dist/esm/i18next.js"),a=require("../services/codicent.js"),n=require("../config/index.js"),r=require("../node_modules/react-i18next/dist/es/initReactI18next.js"),i=require("../node_modules/react-i18next/dist/es/useTranslation.js");const s=()=>{const e=n.getConfigValue("FORCE_LANGUAGE");if(e)return{source:"force_config",language:e};if("undefined"!=typeof window){const e=new URLSearchParams(window.location.search),t=e.get("lang")||e.get("language");if(t)return{source:"url_param",language:t}}if("undefined"!=typeof window&&"undefined"!=typeof localStorage){const e=localStorage.getItem("user_language");if(e&&"auto"!==e)return{source:"user_preference",language:e};if("auto"===e&&"undefined"!=typeof navigator&&navigator.language){return{source:"browser",language:navigator.language.split("-")[0]}}}const t=n.getConfigValue("DEFAULT_LANGUAGE");if(t)return{source:"default",language:t};if("undefined"!=typeof navigator&&navigator.language){return{source:"browser",language:navigator.language.split("-")[0]}}return{source:"default",language:"sv"}},o=()=>s().language,l=()=>{const e=n.getConfigValue("TRANSLATIONS");if(e){const t={};for(const[a,n]of Object.entries(e))t[a]={translation:n};return t}return{en:{translation:{Hello:"Hello"}},sv:{translation:{Hello:"Hej"}}}},u=()=>{if(t.default.isInitialized){const e=l();Object.keys(e).forEach((a=>{t.default.addResourceBundle(a,"translation",e[a].translation,!0,!0)}))}else t.default.use(r.initReactI18next).init({resources:l(),lng:o(),fallbackLng:n.getConfigValue("DEFAULT_LANGUAGE")||"sv",interpolation:{escapeValue:!1}})};u();const c=new Set;let g=JSON.parse(localStorage.getItem("app-translations")||"{}");const d=new Set;exports.default=()=>{const{t:t,i18n:r}=i.useTranslation(),[l,f]=e.useState((()=>o())),[_,m]=e.useState(g);e.useEffect((()=>{if(globalThis.__CODICENT_REINIT_I18N__){u(),globalThis.__CODICENT_REINIT_I18N__=!1;const e=o();f(e)}}),[]),e.useEffect((()=>{r.changeLanguage(l)}),[l,r]);const p=e.useCallback((e=>{const{source:t}=s();"force_config"!==t?"url_param"!==t?f(e):console.warn("Language setting ignored due to URL parameter"):console.warn("Language setting ignored due to FORCE_LANGUAGE configuration")}),[]),h=e.useCallback((()=>s()),[]);return{t:e.useCallback((e=>{if(!r.exists(e)){if(!n.getConfigValue("AUTO_TRANSLATE")&&"sv"!==l){const t=`${l}:${e}`;d.has(t)||(d.add(t),console.warn(`[i18n] Missing translation for key "${e}" in language "${l}"`))}(async(e,t)=>{const r=`${t} - ${e}`;let i=g[t]?.[e]||void 0;if(n.getConfigValue("AUTO_TRANSLATE")&&!i&&!c.has(r)){c.add(r),localStorage.setItem("app-translations",JSON.stringify(g));try{i=(await a.CodicentService.getTranslations(e,t)).translation}catch(e){console.error("Error fetching translation:",e),i=void 0}finally{c.delete(r)}i&&i.includes("Error code:")&&(i=void 0),i&&(!e.trim().startsWith('"')&&i.trim().startsWith('"')&&i.trim().endsWith('"')&&(i=i.trim().slice(1,-1)),!e.trim().startsWith("'")&&i.trim().startsWith("'")&&i.trim().endsWith("'")&&(i=i.trim().slice(1,-1)),g[t]={...g[t],[e]:i},localStorage.setItem("app-translations",JSON.stringify(g)),m({...g}))}return i||e})(e,l).then((t=>{r.addResource(l,"translation",e,t)}))}return t(e)}),[r,t,l]),tAsync:e.useCallback((async e=>{const t=await(async(e,t)=>{const r=`${t} - ${e}`;let i=g[t]?.[e]||void 0;if(n.getConfigValue("AUTO_TRANSLATE")&&!i&&!c.has(r)){c.add(r),localStorage.setItem("app-translations",JSON.stringify(g));try{i=(await a.CodicentService.getTranslations(e,t)).translation}catch(e){console.error("Error fetching translation:",e),i=void 0}finally{c.delete(r)}i&&i.includes("Error code:")&&(i=void 0),i&&(!e.trim().startsWith('"')&&i.trim().startsWith('"')&&i.trim().endsWith('"')&&(i=i.trim().slice(1,-1)),!e.trim().startsWith("'")&&i.trim().startsWith("'")&&i.trim().endsWith("'")&&(i=i.trim().slice(1,-1)),g[t]={...g[t],[e]:i},localStorage.setItem("app-translations",JSON.stringify(g)),m({...g}))}return i||e})(e,l);return r.exists(e)||r.addResource(l,"translation",e,t),t}),[r,l]),currentLanguage:l,setCurrentLanguage:p,getLanguageInfo:h,isForced:["force_config","url_param"].includes(s().source)}};
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("react"),t=require("../node_modules/i18next/dist/esm/i18next.js"),a=require("../services/codicent.js"),n=require("../config/index.js"),r=require("../node_modules/react-i18next/dist/es/initReactI18next.js"),i=require("../node_modules/react-i18next/dist/es/useTranslation.js");const s=()=>{const e=n.getConfigValue("FORCE_LANGUAGE");if(e)return{source:"force_config",language:e};if("undefined"!=typeof window){const e=new URLSearchParams(window.location.search),t=e.get("lang")||e.get("language");if(t)return{source:"url_param",language:t}}if("undefined"!=typeof window&&"undefined"!=typeof localStorage){const e=localStorage.getItem("user_language");if(e&&"auto"!==e)return{source:"user_preference",language:e};if("auto"===e&&"undefined"!=typeof navigator&&navigator.language){return{source:"browser",language:navigator.language.split("-")[0]}}}const t=n.getConfigValue("DEFAULT_LANGUAGE");if(t)return{source:"default",language:t};if("undefined"!=typeof navigator&&navigator.language){return{source:"browser",language:navigator.language.split("-")[0]}}return{source:"default",language:"sv"}},o=()=>s().language,l=()=>{const e=n.getConfigValue("TRANSLATIONS");if(e){const t={};for(const[a,n]of Object.entries(e))t[a]={translation:n};return t}return{en:{translation:{Hello:"Hello"}},sv:{translation:{Hello:"Hej"}}}},u=()=>{if(t.default.isInitialized){const e=l();Object.keys(e).forEach((a=>{t.default.addResourceBundle(a,"translation",e[a].translation,!0,!0)}))}else t.default.use(r.initReactI18next).init({resources:l(),lng:o(),fallbackLng:n.getConfigValue("DEFAULT_LANGUAGE")||"sv",interpolation:{escapeValue:!1}})};u();const c=new Set;let g=JSON.parse(localStorage.getItem("app-translations")||"{}");const d=new Set;exports.default=()=>{const{t:t,i18n:r}=i.useTranslation(),[l,f]=e.useState((()=>o())),[_,m]=e.useState(g);e.useEffect((()=>{if(globalThis.__CODICENT_REINIT_I18N__){u(),globalThis.__CODICENT_REINIT_I18N__=!1;const e=o();f(e),r.changeLanguage(r.language||e)}}),[]),e.useEffect((()=>{r.changeLanguage(l)}),[l,r]);const p=e.useCallback((e=>{const{source:t}=s();"force_config"!==t?"url_param"!==t?f(e):console.warn("Language setting ignored due to URL parameter"):console.warn("Language setting ignored due to FORCE_LANGUAGE configuration")}),[]),h=e.useCallback((()=>s()),[]);return{t:e.useCallback((e=>{if(!r.exists(e)){if(!n.getConfigValue("AUTO_TRANSLATE")&&"sv"!==l){const t=`${l}:${e}`;d.has(t)||(d.add(t),console.warn(`[i18n] Missing translation for key "${e}" in language "${l}"`))}(async(e,t)=>{const r=`${t} - ${e}`;let i=g[t]?.[e]||void 0;if(n.getConfigValue("AUTO_TRANSLATE")&&!i&&!c.has(r)){c.add(r),localStorage.setItem("app-translations",JSON.stringify(g));try{i=(await a.CodicentService.getTranslations(e,t)).translation}catch(e){console.error("Error fetching translation:",e),i=void 0}finally{c.delete(r)}i&&i.includes("Error code:")&&(i=void 0),i&&(!e.trim().startsWith('"')&&i.trim().startsWith('"')&&i.trim().endsWith('"')&&(i=i.trim().slice(1,-1)),!e.trim().startsWith("'")&&i.trim().startsWith("'")&&i.trim().endsWith("'")&&(i=i.trim().slice(1,-1)),g[t]={...g[t],[e]:i},localStorage.setItem("app-translations",JSON.stringify(g)),m({...g}))}return i||e})(e,l).then((t=>{r.addResource(l,"translation",e,t)}))}return t(e)}),[r,t,l]),tAsync:e.useCallback((async e=>{const t=await(async(e,t)=>{const r=`${t} - ${e}`;let i=g[t]?.[e]||void 0;if(n.getConfigValue("AUTO_TRANSLATE")&&!i&&!c.has(r)){c.add(r),localStorage.setItem("app-translations",JSON.stringify(g));try{i=(await a.CodicentService.getTranslations(e,t)).translation}catch(e){console.error("Error fetching translation:",e),i=void 0}finally{c.delete(r)}i&&i.includes("Error code:")&&(i=void 0),i&&(!e.trim().startsWith('"')&&i.trim().startsWith('"')&&i.trim().endsWith('"')&&(i=i.trim().slice(1,-1)),!e.trim().startsWith("'")&&i.trim().startsWith("'")&&i.trim().endsWith("'")&&(i=i.trim().slice(1,-1)),g[t]={...g[t],[e]:i},localStorage.setItem("app-translations",JSON.stringify(g)),m({...g}))}return i||e})(e,l);return r.exists(e)||r.addResource(l,"translation",e,t),t}),[r,l]),currentLanguage:l,setCurrentLanguage:p,getLanguageInfo:h,isForced:["force_config","url_param"].includes(s().source)}};
@@ -1 +1 @@
1
- "use strict";var e=require("react"),r=require("../utils/MessageContent.js");exports.useUserRoles=(t,s,n)=>{const[a,o]=e.useState([]),[i,l]=e.useState(!0),[u,c]=e.useState(null);e.useEffect((()=>{if(!s||!n)return void l(!1);(async()=>{try{l(!0),c(null);const e=(await t.getMessagesFast(["user_role"],void 0,100)).map((e=>{const t=new r.default(e.content).data;return t&&"object"==typeof t?t:null})).filter((e=>null!==e));o(e)}catch(e){console.error("Failed to fetch user roles:",e),c(e instanceof Error?e.message:"Failed to fetch user roles")}finally{l(!1)}})()}),[t,s,n]);const m=e.useCallback((e=>{if(!e)return"";const r=e.toLowerCase(),t=a.find((e=>{if(!e.nicknames)return!1;return e.nicknames.toLowerCase().split(",").map((e=>e.trim())).some((e=>e===r))}));return t?.name||e}),[a]),f=(e,r)=>{if(!e||!r)return!1;const t=e.toLowerCase();if(r.nicknames){if(r.nicknames.toLowerCase().split(",").map((e=>e.trim())).some((e=>e===t)))return!0}return r.name?.toLowerCase()===t||r.email?.toLowerCase()===t},C=e=>{if(e)return a.find((r=>f(e,r)))},d=e.useCallback((()=>s?m(s):""),[s,m]);return{userRoles:a,loading:i,error:u,getNameFromNickname:m,getNicknameFromName:e=>{if(!e)return"";const r=a.find((r=>r.name?.toLowerCase()===e.toLowerCase()));if(r?.nicknames){return r.nicknames.split(",").map((e=>e.trim()))[0]||e}return e},isUserMatch:f,findUserRole:C,getClaimsForUser:e=>{const r=C(e);return r?.claims?r.claims.split(",").map((e=>e.trim())).filter(Boolean):[]},getCurrentUserRole:()=>{if(s)return C(s)},getCurrentUserName:d}};
1
+ "use strict";var e=require("react"),r=require("../utils/MessageContent.js");exports.useUserRoles=(t,s,n)=>{const[a,o]=e.useState([]),[i,l]=e.useState(!0),[u,c]=e.useState(null);e.useEffect((()=>{if(!s||!n)return void l(!1);(async()=>{try{l(!0),c(null);const e=(await t.getMessagesFast(["user_role"],void 0,100,void 0,n)).map((e=>{const t=new r.default(e.content).data;return t&&"object"==typeof t?t:null})).filter((e=>null!==e));o(e)}catch(e){console.error("Failed to fetch user roles:",e),c(e instanceof Error?e.message:"Failed to fetch user roles")}finally{l(!1)}})()}),[t,s,n]);const m=e.useCallback((e=>{if(!e)return"";const r=e.toLowerCase(),t=a.find((e=>{if(!e.nicknames)return!1;return e.nicknames.toLowerCase().split(",").map((e=>e.trim())).some((e=>e===r))}));return t?.name||e}),[a]),f=(e,r)=>{if(!e||!r)return!1;const t=e.toLowerCase();if(r.nicknames){if(r.nicknames.toLowerCase().split(",").map((e=>e.trim())).some((e=>e===t)))return!0}return r.name?.toLowerCase()===t||r.email?.toLowerCase()===t},C=e=>{if(e)return a.find((r=>f(e,r)))},d=e.useCallback((()=>s?m(s):""),[s,m]);return{userRoles:a,loading:i,error:u,getNameFromNickname:m,getNicknameFromName:e=>{if(!e)return"";const r=a.find((r=>r.name?.toLowerCase()===e.toLowerCase()));if(r?.nicknames){return r.nicknames.split(",").map((e=>e.trim()))[0]||e}return e},isUserMatch:f,findUserRole:C,getClaimsForUser:e=>{const r=C(e);return r?.claims?r.claims.split(",").map((e=>e.trim())).filter(Boolean):[]},getCurrentUserRole:()=>{if(s)return C(s)},getCurrentUserName:d}};
@@ -1 +1 @@
1
- {"version":3,"file":"useLocalization.d.ts","sourceRoot":"","sources":["../../../src/hooks/useLocalization.ts"],"names":[],"mappings":"AAOA,UAAU,cAAc;IACtB,MAAM,EAAE,cAAc,GAAG,WAAW,GAAG,iBAAiB,GAAG,SAAS,GAAG,SAAS,CAAC;IACjF,QAAQ,EAAE,MAAM,CAAC;CAClB;AA6GD,eAAO,MAAM,gBAAgB,YAAiB,CAAC;AAa/C,QAAA,MAAM,eAAe;aA2CX,MAAM;kBAkFA,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;;+BApGC,MAAM;;;CA2K9C,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"useLocalization.d.ts","sourceRoot":"","sources":["../../../src/hooks/useLocalization.ts"],"names":[],"mappings":"AAOA,UAAU,cAAc;IACtB,MAAM,EAAE,cAAc,GAAG,WAAW,GAAG,iBAAiB,GAAG,SAAS,GAAG,SAAS,CAAC;IACjF,QAAQ,EAAE,MAAM,CAAC;CAClB;AA6GD,eAAO,MAAM,gBAAgB,YAAiB,CAAC;AAa/C,QAAA,MAAM,eAAe;aAgDX,MAAM;kBAkFA,MAAM,KAAG,OAAO,CAAC,MAAM,CAAC;;+BApGC,MAAM;;;CA2K9C,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1 +1 @@
1
- import{useState as t,useEffect as e,useCallback as n}from"react";import a from"../node_modules/i18next/dist/esm/i18next.js";import{CodicentService as r}from"../services/codicent.js";import{getConfigValue as o}from"../config/index.js";import{initReactI18next as s}from"../node_modules/react-i18next/dist/es/initReactI18next.js";import{useTranslation as i}from"../node_modules/react-i18next/dist/es/useTranslation.js";const l=()=>{const t=o("FORCE_LANGUAGE");if(t)return{source:"force_config",language:t};if("undefined"!=typeof window){const t=new URLSearchParams(window.location.search),e=t.get("lang")||t.get("language");if(e)return{source:"url_param",language:e}}if("undefined"!=typeof window&&"undefined"!=typeof localStorage){const t=localStorage.getItem("user_language");if(t&&"auto"!==t)return{source:"user_preference",language:t};if("auto"===t&&"undefined"!=typeof navigator&&navigator.language){return{source:"browser",language:navigator.language.split("-")[0]}}}const e=o("DEFAULT_LANGUAGE");if(e)return{source:"default",language:e};if("undefined"!=typeof navigator&&navigator.language){return{source:"browser",language:navigator.language.split("-")[0]}}return{source:"default",language:"sv"}},c=()=>l().language,g=()=>{const t=o("TRANSLATIONS");if(t){const e={};for(const[n,a]of Object.entries(t))e[n]={translation:a};return e}return{en:{translation:{Hello:"Hello"}},sv:{translation:{Hello:"Hej"}}}},u=()=>{if(a.isInitialized){const t=g();Object.keys(t).forEach((e=>{a.addResourceBundle(e,"translation",t[e].translation,!0,!0)}))}else a.use(s).init({resources:g(),lng:c(),fallbackLng:o("DEFAULT_LANGUAGE")||"sv",interpolation:{escapeValue:!1}})};u();const d=new Set;let f=JSON.parse(localStorage.getItem("app-translations")||"{}");const m=new Set,p=()=>{const{t:a,i18n:s}=i(),[g,p]=t((()=>c())),[_,h]=t(f);e((()=>{if(globalThis.__CODICENT_REINIT_I18N__){u(),globalThis.__CODICENT_REINIT_I18N__=!1;const t=c();p(t)}}),[]),e((()=>{s.changeLanguage(g)}),[g,s]);const A=n((t=>{const{source:e}=l();"force_config"!==e?"url_param"!==e?p(t):console.warn("Language setting ignored due to URL parameter"):console.warn("Language setting ignored due to FORCE_LANGUAGE configuration")}),[]),T=n((()=>l()),[]);return{t:n((t=>{if(!s.exists(t)){if(!o("AUTO_TRANSLATE")&&"sv"!==g){const e=`${g}:${t}`;m.has(e)||(m.add(e),console.warn(`[i18n] Missing translation for key "${t}" in language "${g}"`))}(async(t,e)=>{const n=`${e} - ${t}`;let a=f[e]?.[t]||void 0;if(o("AUTO_TRANSLATE")&&!a&&!d.has(n)){d.add(n),localStorage.setItem("app-translations",JSON.stringify(f));try{a=(await r.getTranslations(t,e)).translation}catch(t){console.error("Error fetching translation:",t),a=void 0}finally{d.delete(n)}a&&a.includes("Error code:")&&(a=void 0),a&&(!t.trim().startsWith('"')&&a.trim().startsWith('"')&&a.trim().endsWith('"')&&(a=a.trim().slice(1,-1)),!t.trim().startsWith("'")&&a.trim().startsWith("'")&&a.trim().endsWith("'")&&(a=a.trim().slice(1,-1)),f[e]={...f[e],[t]:a},localStorage.setItem("app-translations",JSON.stringify(f)),h({...f}))}return a||t})(t,g).then((e=>{s.addResource(g,"translation",t,e)}))}return a(t)}),[s,a,g]),tAsync:n((async t=>{const e=await(async(t,e)=>{const n=`${e} - ${t}`;let a=f[e]?.[t]||void 0;if(o("AUTO_TRANSLATE")&&!a&&!d.has(n)){d.add(n),localStorage.setItem("app-translations",JSON.stringify(f));try{a=(await r.getTranslations(t,e)).translation}catch(t){console.error("Error fetching translation:",t),a=void 0}finally{d.delete(n)}a&&a.includes("Error code:")&&(a=void 0),a&&(!t.trim().startsWith('"')&&a.trim().startsWith('"')&&a.trim().endsWith('"')&&(a=a.trim().slice(1,-1)),!t.trim().startsWith("'")&&a.trim().startsWith("'")&&a.trim().endsWith("'")&&(a=a.trim().slice(1,-1)),f[e]={...f[e],[t]:a},localStorage.setItem("app-translations",JSON.stringify(f)),h({...f}))}return a||t})(t,g);return s.exists(t)||s.addResource(g,"translation",t,e),e}),[s,g]),currentLanguage:g,setCurrentLanguage:A,getLanguageInfo:T,isForced:["force_config","url_param"].includes(l().source)}};export{p as default};
1
+ import{useState as t,useEffect as e,useCallback as n}from"react";import a from"../node_modules/i18next/dist/esm/i18next.js";import{CodicentService as r}from"../services/codicent.js";import{getConfigValue as o}from"../config/index.js";import{initReactI18next as s}from"../node_modules/react-i18next/dist/es/initReactI18next.js";import{useTranslation as i}from"../node_modules/react-i18next/dist/es/useTranslation.js";const l=()=>{const t=o("FORCE_LANGUAGE");if(t)return{source:"force_config",language:t};if("undefined"!=typeof window){const t=new URLSearchParams(window.location.search),e=t.get("lang")||t.get("language");if(e)return{source:"url_param",language:e}}if("undefined"!=typeof window&&"undefined"!=typeof localStorage){const t=localStorage.getItem("user_language");if(t&&"auto"!==t)return{source:"user_preference",language:t};if("auto"===t&&"undefined"!=typeof navigator&&navigator.language){return{source:"browser",language:navigator.language.split("-")[0]}}}const e=o("DEFAULT_LANGUAGE");if(e)return{source:"default",language:e};if("undefined"!=typeof navigator&&navigator.language){return{source:"browser",language:navigator.language.split("-")[0]}}return{source:"default",language:"sv"}},c=()=>l().language,g=()=>{const t=o("TRANSLATIONS");if(t){const e={};for(const[n,a]of Object.entries(t))e[n]={translation:a};return e}return{en:{translation:{Hello:"Hello"}},sv:{translation:{Hello:"Hej"}}}},u=()=>{if(a.isInitialized){const t=g();Object.keys(t).forEach((e=>{a.addResourceBundle(e,"translation",t[e].translation,!0,!0)}))}else a.use(s).init({resources:g(),lng:c(),fallbackLng:o("DEFAULT_LANGUAGE")||"sv",interpolation:{escapeValue:!1}})};u();const d=new Set;let f=JSON.parse(localStorage.getItem("app-translations")||"{}");const m=new Set,p=()=>{const{t:a,i18n:s}=i(),[g,p]=t((()=>c())),[_,h]=t(f);e((()=>{if(globalThis.__CODICENT_REINIT_I18N__){u(),globalThis.__CODICENT_REINIT_I18N__=!1;const t=c();p(t),s.changeLanguage(s.language||t)}}),[]),e((()=>{s.changeLanguage(g)}),[g,s]);const A=n((t=>{const{source:e}=l();"force_config"!==e?"url_param"!==e?p(t):console.warn("Language setting ignored due to URL parameter"):console.warn("Language setting ignored due to FORCE_LANGUAGE configuration")}),[]),T=n((()=>l()),[]);return{t:n((t=>{if(!s.exists(t)){if(!o("AUTO_TRANSLATE")&&"sv"!==g){const e=`${g}:${t}`;m.has(e)||(m.add(e),console.warn(`[i18n] Missing translation for key "${t}" in language "${g}"`))}(async(t,e)=>{const n=`${e} - ${t}`;let a=f[e]?.[t]||void 0;if(o("AUTO_TRANSLATE")&&!a&&!d.has(n)){d.add(n),localStorage.setItem("app-translations",JSON.stringify(f));try{a=(await r.getTranslations(t,e)).translation}catch(t){console.error("Error fetching translation:",t),a=void 0}finally{d.delete(n)}a&&a.includes("Error code:")&&(a=void 0),a&&(!t.trim().startsWith('"')&&a.trim().startsWith('"')&&a.trim().endsWith('"')&&(a=a.trim().slice(1,-1)),!t.trim().startsWith("'")&&a.trim().startsWith("'")&&a.trim().endsWith("'")&&(a=a.trim().slice(1,-1)),f[e]={...f[e],[t]:a},localStorage.setItem("app-translations",JSON.stringify(f)),h({...f}))}return a||t})(t,g).then((e=>{s.addResource(g,"translation",t,e)}))}return a(t)}),[s,a,g]),tAsync:n((async t=>{const e=await(async(t,e)=>{const n=`${e} - ${t}`;let a=f[e]?.[t]||void 0;if(o("AUTO_TRANSLATE")&&!a&&!d.has(n)){d.add(n),localStorage.setItem("app-translations",JSON.stringify(f));try{a=(await r.getTranslations(t,e)).translation}catch(t){console.error("Error fetching translation:",t),a=void 0}finally{d.delete(n)}a&&a.includes("Error code:")&&(a=void 0),a&&(!t.trim().startsWith('"')&&a.trim().startsWith('"')&&a.trim().endsWith('"')&&(a=a.trim().slice(1,-1)),!t.trim().startsWith("'")&&a.trim().startsWith("'")&&a.trim().endsWith("'")&&(a=a.trim().slice(1,-1)),f[e]={...f[e],[t]:a},localStorage.setItem("app-translations",JSON.stringify(f)),h({...f}))}return a||t})(t,g);return s.exists(t)||s.addResource(g,"translation",t,e),e}),[s,g]),currentLanguage:g,setCurrentLanguage:A,getLanguageInfo:T,isForced:["force_config","url_param"].includes(l().source)}};export{p as default};
@@ -1 +1 @@
1
- import{useState as e,useEffect as r,useCallback as t}from"react";import n from"../utils/MessageContent.js";const o=(o,s,a)=>{const[i,m]=e([]),[l,c]=e(!0),[u,f]=e(null);r((()=>{if(!s||!a)return void c(!1);(async()=>{try{c(!0),f(null);const e=(await o.getMessagesFast(["user_role"],void 0,100)).map((e=>{const r=new n(e.content).data;return r&&"object"==typeof r?r:null})).filter((e=>null!==e));m(e)}catch(e){console.error("Failed to fetch user roles:",e),f(e instanceof Error?e.message:"Failed to fetch user roles")}finally{c(!1)}})()}),[o,s,a]);const p=t((e=>{if(!e)return"";const r=e.toLowerCase(),t=i.find((e=>{if(!e.nicknames)return!1;return e.nicknames.toLowerCase().split(",").map((e=>e.trim())).some((e=>e===r))}));return t?.name||e}),[i]),C=(e,r)=>{if(!e||!r)return!1;const t=e.toLowerCase();if(r.nicknames){if(r.nicknames.toLowerCase().split(",").map((e=>e.trim())).some((e=>e===t)))return!0}return r.name?.toLowerCase()===t||r.email?.toLowerCase()===t},d=e=>{if(e)return i.find((r=>C(e,r)))},g=t((()=>s?p(s):""),[s,p]);return{userRoles:i,loading:l,error:u,getNameFromNickname:p,getNicknameFromName:e=>{if(!e)return"";const r=i.find((r=>r.name?.toLowerCase()===e.toLowerCase()));if(r?.nicknames){return r.nicknames.split(",").map((e=>e.trim()))[0]||e}return e},isUserMatch:C,findUserRole:d,getClaimsForUser:e=>{const r=d(e);return r?.claims?r.claims.split(",").map((e=>e.trim())).filter(Boolean):[]},getCurrentUserRole:()=>{if(s)return d(s)},getCurrentUserName:g}};export{o as useUserRoles};
1
+ import{useState as e,useEffect as r,useCallback as t}from"react";import n from"../utils/MessageContent.js";const o=(o,s,a)=>{const[i,m]=e([]),[l,c]=e(!0),[u,f]=e(null);r((()=>{if(!s||!a)return void c(!1);(async()=>{try{c(!0),f(null);const e=(await o.getMessagesFast(["user_role"],void 0,100,void 0,a)).map((e=>{const r=new n(e.content).data;return r&&"object"==typeof r?r:null})).filter((e=>null!==e));m(e)}catch(e){console.error("Failed to fetch user roles:",e),f(e instanceof Error?e.message:"Failed to fetch user roles")}finally{c(!1)}})()}),[o,s,a]);const p=t((e=>{if(!e)return"";const r=e.toLowerCase(),t=i.find((e=>{if(!e.nicknames)return!1;return e.nicknames.toLowerCase().split(",").map((e=>e.trim())).some((e=>e===r))}));return t?.name||e}),[i]),C=(e,r)=>{if(!e||!r)return!1;const t=e.toLowerCase();if(r.nicknames){if(r.nicknames.toLowerCase().split(",").map((e=>e.trim())).some((e=>e===t)))return!0}return r.name?.toLowerCase()===t||r.email?.toLowerCase()===t},d=e=>{if(e)return i.find((r=>C(e,r)))},g=t((()=>s?p(s):""),[s,p]);return{userRoles:i,loading:l,error:u,getNameFromNickname:p,getNicknameFromName:e=>{if(!e)return"";const r=i.find((r=>r.name?.toLowerCase()===e.toLowerCase()));if(r?.nicknames){return r.nicknames.split(",").map((e=>e.trim()))[0]||e}return e},isUserMatch:C,findUserRole:d,getClaimsForUser:e=>{const r=d(e);return r?.claims?r.claims.split(",").map((e=>e.trim())).filter(Boolean):[]},getCurrentUserRole:()=>{if(s)return d(s)},getCurrentUserName:g}};export{o as useUserRoles};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codicent-app-sdk",
3
- "version": "0.6.2",
3
+ "version": "0.6.4",
4
4
  "description": "SDK for building AI-powered applications with Codicent",
5
5
  "type": "module",
6
6
  "main": "dist/cjs/index.js",