@sveltekit-i18n/base 1.0.0-beta.1 → 1.0.0-beta.2
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.
- package/dist/index.cjs +1 -0
- package/dist/index.d.ts +73 -0
- package/dist/index.js +1 -0
- package/package.json +2 -3
package/dist/index.cjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var T=Object.defineProperty,k=Object.defineProperties,E=Object.getOwnPropertyDescriptor,O=Object.getOwnPropertyDescriptors,W=Object.getOwnPropertyNames,y=Object.getOwnPropertySymbols;var v=Object.prototype.hasOwnProperty,P=Object.prototype.propertyIsEnumerable;var F=(t,e,o)=>e in t?T(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o,r=(t,e)=>{for(var o in e||(e={}))v.call(e,o)&&F(t,o,e[o]);if(y)for(var o of y(e))P.call(e,o)&&F(t,o,e[o]);return t},l=(t,e)=>k(t,O(e)),K=t=>T(t,"__esModule",{value:!0});var b=(t,e)=>{var o={};for(var s in t)v.call(t,s)&&e.indexOf(s)<0&&(o[s]=t[s]);if(t!=null&&y)for(var s of y(t))e.indexOf(s)<0&&P.call(t,s)&&(o[s]=t[s]);return o};var D=(t,e)=>{for(var o in e)T(t,o,{get:e[o],enumerable:!0})},N=(t,e,o,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of W(e))!v.call(t,i)&&(o||i!=="default")&&T(t,i,{get:()=>e[i],enumerable:!(s=E(e,i))||s.enumerable});return t};var M=(t=>(e,o)=>t&&t.get(e)||(o=N(K({}),e,1),t&&t.set(e,o),o))(typeof WeakMap!="undefined"?new WeakMap:0);var A={};D(A,{default:()=>j});var a=require("svelte/store");var c=(t,e={})=>t||e,m=(t,e)=>Object.keys(c(t)).reduce((o,s)=>{let i=t[s],n=e?`${e}.${s}`:`${s}`;return i&&typeof i=="object"?r(r({},o),m(i,n)):l(r({},o),{[n]:i})},{}),x=async t=>{try{return(await Promise.all(t.map(i=>{var n=i,{loader:o}=n,s=b(n,["loader"]);return new Promise(async p=>{let u;try{u=await o()}catch(w){console.error(`Failed to load translation. Verify your '${s.locale}' > '${s.key}' loader.`),console.error(w)}p(l(r({loader:o},s),{data:u}))})}))).reduce((o,{key:s,data:i,locale:n})=>i?l(r({},o),{[n]:m(l(r({},c(o[n])),{[s]:i}))}):o,{})}catch(e){console.error(e)}return{}},$=t=>e=>{try{if(typeof e=="string")return e===t;if(typeof e=="object")return e.test(t)}catch{throw new Error("Invalid route config!")}return!1};var j=class{constructor(t){this.loadedKeys={};this.currentRoute=(0,a.writable)();this.config=(0,a.writable)();this.isLoading=(0,a.writable)(!1);this.promises=[];this.loading={subscribe:this.isLoading.subscribe,toPromise:()=>Promise.all(this.promises),get:()=>(0,a.get)(this.isLoading)};this.privateTranslations=(0,a.writable)({});this.translations={subscribe:this.privateTranslations.subscribe,get:()=>(0,a.get)(this.translations)};this.locales=l(r({},(0,a.derived)([this.config,this.privateTranslations],([t,e])=>{if(!t)return[];let{loaders:o=[]}=t,s=o.map(({locale:n})=>`${n}`.toLowerCase()),i=Object.keys(e).map(n=>`${n}`.toLowerCase());return[...new Set([...s,...i])]},[])),{get:()=>(0,a.get)(this.locales)});this.internalLocale=(0,a.writable)();this.locale=l(r({set:this.internalLocale.set,update:this.internalLocale.update},(0,a.derived)(this.internalLocale,(t,e)=>{let o=t&&`${t}`.toLowerCase(),s=this.getLocale(o);s&&s!==this.locale.get()&&e(s)})),{get:()=>(0,a.get)(this.locale)});this.loaderTrigger=(0,a.derived)([this.internalLocale,this.currentRoute],([t,e],o)=>{t!==void 0&&e!==void 0&&o([t,e])},[]);this.initialized=(0,a.derived)([this.locale,this.currentRoute,this.privateTranslations],([t,e,o],s)=>{(0,a.get)(this.initialized)||s(t!==void 0&&e!==void 0&&!!Object.keys(o).length)});this.translation=(0,a.derived)([this.privateTranslations,this.locale,this.isLoading],([t,e,o],s)=>{let i=t[e];i&&Object.keys(i).length&&!o&&s(i)},{});this.t=l(r({},(0,a.derived)([this.config,this.translation],([{parser:t,fallbackLocale:e}])=>(o,s)=>t==null?void 0:t.parse({key:o,payload:s,translations:this.translations.get(),locale:this.locale.get(),fallbackLocale:e}))),{get:(...t)=>(0,a.get)(this.t)(...t)});this.l=l(r({},(0,a.derived)([this.config,this.translations],([{parser:t,fallbackLocale:e},o])=>(s,i,n)=>t.parse({key:i,payload:n,translations:o,locale:s,fallbackLocale:e}))),{get:(...t)=>(0,a.get)(this.l)(...t)});this.getLocale=t=>t?`${this.locales.get().find(s=>`${s}`.toLowerCase()===`${t}`.toLowerCase())||""}`.toLowerCase():"";this.setLocale=async t=>{!t||(this.internalLocale.set(t),await this.loading.toPromise())};this.setRoute=async t=>{t!==(0,a.get)(this.currentRoute)&&this.currentRoute.set(t),await this.loading.toPromise()};this.loadConfig=async t=>{if(!t)throw new Error("No config!");this.config.set(t);let{initLocale:e="",translations:o}=t;o&&this.addTranslations(o),await this.loadTranslations(e)};this.addTranslations=(t,e)=>{if(!t)return;let o=Object.keys(c(t));this.privateTranslations.update(s=>o.reduce((i,n)=>l(r({},i),{[n]:r(r({},c(i[n])),m(t[n]))}),s)),o.forEach(s=>{let i=Object.keys(t[s]).map(n=>`${n}`.split(".")[0]);e&&(i=e[s]),this.loadedKeys[s]=Array.from(new Set([...c(this.loadedKeys[s],[]),...c(i,[])]))})};this.getTranslationProps=async(t=this.locale.get(),e=(0,a.get)(this.currentRoute))=>{let o=(0,a.get)(this.config);if(!o||!t)return[];let s=this.translations.get(),{loaders:i,fallbackLocale:n=""}=c(o),p=`${t}`.toLowerCase(),u=n&&`${n}`.toLowerCase(),w=s[p],S=s[u],R=c(i,[]).map(C=>{var g=C,{locale:d}=g,h=b(g,["locale"]);return l(r({},h),{locale:`${d}`.toLowerCase()})}).filter(({routes:d})=>!d||c(d,[]).some($(e))).filter(({key:d,locale:h})=>h===p&&(!w||!c(this.loadedKeys[p],[]).includes(d))||n&&h===u&&(!S||!c(this.loadedKeys[u],[]).includes(d)));if(R.length){this.isLoading.set(!0);let d=await x(R);this.isLoading.set(!1);let h=Object.keys(d).reduce((g,f)=>l(r({},g),{[f]:Object.keys(d[f])}),{}),C=R.filter(({key:g,locale:f})=>c(h[f],[]).some(L=>`${L}`.startsWith(g))).reduce((g,{key:f,locale:L})=>l(r({},g),{[L]:[...g[L]||[],f]}),{});return[d,C]}return[]};this.translationLoader=async t=>{this.promises.push(new Promise(async e=>{let o=await this.getTranslationProps(t);o.length&&this.addTranslations(...o),e()})),await this.loading.toPromise()};this.loadTranslations=async(t,e=(0,a.get)(this.currentRoute)||"")=>{!t||(this.setRoute(e),this.setLocale(t),await this.loading.toPromise())};t&&this.loadConfig(t),this.loaderTrigger.subscribe(()=>this.translationLoader())}};module.exports=M(A);0&&(module.exports={});
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { Readable, Writable } from 'svelte/store';
|
|
2
|
+
|
|
3
|
+
type LoadingStore = Readable<boolean> & { toPromise: () => Promise<void[]>, get: () => boolean };
|
|
4
|
+
|
|
5
|
+
type Loader = () => Promise<Record<any, any>>;
|
|
6
|
+
|
|
7
|
+
type Route = string | RegExp;
|
|
8
|
+
|
|
9
|
+
type LoaderModule = {
|
|
10
|
+
key: string;
|
|
11
|
+
locale: string;
|
|
12
|
+
routes?: Route[];
|
|
13
|
+
loader: Loader;
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
type TranslationFunction = (key: string, vars?: Record<any, any>) => string;
|
|
17
|
+
|
|
18
|
+
type LocalTranslationFunction = (locale: string, key: string, vars?: Record<any, any>) => string;
|
|
19
|
+
|
|
20
|
+
type ExtendedStore<T, Get = () => T, Store = Readable<T>> = Store & { get: Get };
|
|
21
|
+
|
|
22
|
+
type ConfigTranslations = { [locale: string]: Record<string, any> };
|
|
23
|
+
|
|
24
|
+
type Translations = { [locale: string]: Record<string, string> };
|
|
25
|
+
|
|
26
|
+
type Parser = {
|
|
27
|
+
parse: (props: {
|
|
28
|
+
key: string;
|
|
29
|
+
payload: any;
|
|
30
|
+
translations: Translations;
|
|
31
|
+
locale: string;
|
|
32
|
+
fallbackLocale?: string;
|
|
33
|
+
}) => string;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
type Config = {
|
|
37
|
+
parser: Parser;
|
|
38
|
+
loaders?: LoaderModule[];
|
|
39
|
+
translations?: ConfigTranslations;
|
|
40
|
+
initLocale?: string;
|
|
41
|
+
fallbackLocale?: string;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
declare class export_default{
|
|
45
|
+
constructor(config?: Config);
|
|
46
|
+
private loadedKeys;
|
|
47
|
+
private currentRoute;
|
|
48
|
+
private config;
|
|
49
|
+
private isLoading;
|
|
50
|
+
private promises;
|
|
51
|
+
loading: LoadingStore;
|
|
52
|
+
private privateTranslations;
|
|
53
|
+
translations: ExtendedStore<Translations>;
|
|
54
|
+
locales: ExtendedStore<string[]>;
|
|
55
|
+
private internalLocale;
|
|
56
|
+
locale: ExtendedStore<string, () => string, Writable<string>>;
|
|
57
|
+
private loaderTrigger;
|
|
58
|
+
initialized: Readable<boolean>;
|
|
59
|
+
private translation;
|
|
60
|
+
t: ExtendedStore<TranslationFunction, TranslationFunction>;
|
|
61
|
+
l: ExtendedStore<LocalTranslationFunction, LocalTranslationFunction>;
|
|
62
|
+
private getLocale;
|
|
63
|
+
setLocale: (locale?: string | undefined) => Promise<void>;
|
|
64
|
+
setRoute: (route: string) => Promise<void>;
|
|
65
|
+
loadConfig: (config: Config) => Promise<void>;
|
|
66
|
+
addTranslations: (translations?: ConfigTranslations | undefined, keys?: Record<string, string[]> | undefined) => void;
|
|
67
|
+
getTranslationProps: ($locale?: string, $route?: string) => Promise<[ConfigTranslations, Record<string, string[]>] | [
|
|
68
|
+
]>;
|
|
69
|
+
private translationLoader;
|
|
70
|
+
loadTranslations: (locale: string, route?: string) => Promise<void>;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export { Config, Parser, export_default as default };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var k=Object.defineProperty,E=Object.defineProperties;var O=Object.getOwnPropertyDescriptors;var b=Object.getOwnPropertySymbols;var P=Object.prototype.hasOwnProperty,x=Object.prototype.propertyIsEnumerable;var F=(t,e,o)=>e in t?k(t,e,{enumerable:!0,configurable:!0,writable:!0,value:o}):t[e]=o,n=(t,e)=>{for(var o in e||(e={}))P.call(e,o)&&F(t,o,e[o]);if(b)for(var o of b(e))x.call(e,o)&&F(t,o,e[o]);return t},r=(t,e)=>E(t,O(e));var m=(t,e)=>{var o={};for(var s in t)P.call(t,s)&&e.indexOf(s)<0&&(o[s]=t[s]);if(t!=null&&b)for(var s of b(t))e.indexOf(s)<0&&x.call(t,s)&&(o[s]=t[s]);return o};import{derived as u,get as d,writable as y}from"svelte/store";var l=(t,e={})=>t||e,w=(t,e)=>Object.keys(l(t)).reduce((o,s)=>{let i=t[s],a=e?`${e}.${s}`:`${s}`;return i&&typeof i=="object"?n(n({},o),w(i,a)):r(n({},o),{[a]:i})},{}),$=async t=>{try{return(await Promise.all(t.map(i=>{var a=i,{loader:o}=a,s=m(a,["loader"]);return new Promise(async L=>{let h;try{h=await o()}catch(R){console.error(`Failed to load translation. Verify your '${s.locale}' > '${s.key}' loader.`),console.error(R)}L(r(n({loader:o},s),{data:h}))})}))).reduce((o,{key:s,data:i,locale:a})=>i?r(n({},o),{[a]:w(r(n({},l(o[a])),{[s]:i}))}):o,{})}catch(e){console.error(e)}return{}},j=t=>e=>{try{if(typeof e=="string")return e===t;if(typeof e=="object")return e.test(t)}catch{throw new Error("Invalid route config!")}return!1};var D=class{constructor(t){this.loadedKeys={};this.currentRoute=y();this.config=y();this.isLoading=y(!1);this.promises=[];this.loading={subscribe:this.isLoading.subscribe,toPromise:()=>Promise.all(this.promises),get:()=>d(this.isLoading)};this.privateTranslations=y({});this.translations={subscribe:this.privateTranslations.subscribe,get:()=>d(this.translations)};this.locales=r(n({},u([this.config,this.privateTranslations],([t,e])=>{if(!t)return[];let{loaders:o=[]}=t,s=o.map(({locale:a})=>`${a}`.toLowerCase()),i=Object.keys(e).map(a=>`${a}`.toLowerCase());return[...new Set([...s,...i])]},[])),{get:()=>d(this.locales)});this.internalLocale=y();this.locale=r(n({set:this.internalLocale.set,update:this.internalLocale.update},u(this.internalLocale,(t,e)=>{let o=t&&`${t}`.toLowerCase(),s=this.getLocale(o);s&&s!==this.locale.get()&&e(s)})),{get:()=>d(this.locale)});this.loaderTrigger=u([this.internalLocale,this.currentRoute],([t,e],o)=>{t!==void 0&&e!==void 0&&o([t,e])},[]);this.initialized=u([this.locale,this.currentRoute,this.privateTranslations],([t,e,o],s)=>{d(this.initialized)||s(t!==void 0&&e!==void 0&&!!Object.keys(o).length)});this.translation=u([this.privateTranslations,this.locale,this.isLoading],([t,e,o],s)=>{let i=t[e];i&&Object.keys(i).length&&!o&&s(i)},{});this.t=r(n({},u([this.config,this.translation],([{parser:t,fallbackLocale:e}])=>(o,s)=>t==null?void 0:t.parse({key:o,payload:s,translations:this.translations.get(),locale:this.locale.get(),fallbackLocale:e}))),{get:(...t)=>d(this.t)(...t)});this.l=r(n({},u([this.config,this.translations],([{parser:t,fallbackLocale:e},o])=>(s,i,a)=>t.parse({key:i,payload:a,translations:o,locale:s,fallbackLocale:e}))),{get:(...t)=>d(this.l)(...t)});this.getLocale=t=>t?`${this.locales.get().find(s=>`${s}`.toLowerCase()===`${t}`.toLowerCase())||""}`.toLowerCase():"";this.setLocale=async t=>{!t||(this.internalLocale.set(t),await this.loading.toPromise())};this.setRoute=async t=>{t!==d(this.currentRoute)&&this.currentRoute.set(t),await this.loading.toPromise()};this.loadConfig=async t=>{if(!t)throw new Error("No config!");this.config.set(t);let{initLocale:e="",translations:o}=t;o&&this.addTranslations(o),await this.loadTranslations(e)};this.addTranslations=(t,e)=>{if(!t)return;let o=Object.keys(l(t));this.privateTranslations.update(s=>o.reduce((i,a)=>r(n({},i),{[a]:n(n({},l(i[a])),w(t[a]))}),s)),o.forEach(s=>{let i=Object.keys(t[s]).map(a=>`${a}`.split(".")[0]);e&&(i=e[s]),this.loadedKeys[s]=Array.from(new Set([...l(this.loadedKeys[s],[]),...l(i,[])]))})};this.getTranslationProps=async(t=this.locale.get(),e=d(this.currentRoute))=>{let o=d(this.config);if(!o||!t)return[];let s=this.translations.get(),{loaders:i,fallbackLocale:a=""}=l(o),L=`${t}`.toLowerCase(),h=a&&`${a}`.toLowerCase(),R=s[L],S=s[h],v=l(i,[]).map(C=>{var g=C,{locale:c}=g,f=m(g,["locale"]);return r(n({},f),{locale:`${c}`.toLowerCase()})}).filter(({routes:c})=>!c||l(c,[]).some(j(e))).filter(({key:c,locale:f})=>f===L&&(!R||!l(this.loadedKeys[L],[]).includes(c))||a&&f===h&&(!S||!l(this.loadedKeys[h],[]).includes(c)));if(v.length){this.isLoading.set(!0);let c=await $(v);this.isLoading.set(!1);let f=Object.keys(c).reduce((g,p)=>r(n({},g),{[p]:Object.keys(c[p])}),{}),C=v.filter(({key:g,locale:p})=>l(f[p],[]).some(T=>`${T}`.startsWith(g))).reduce((g,{key:p,locale:T})=>r(n({},g),{[T]:[...g[T]||[],p]}),{});return[c,C]}return[]};this.translationLoader=async t=>{this.promises.push(new Promise(async e=>{let o=await this.getTranslationProps(t);o.length&&this.addTranslations(...o),e()})),await this.loading.toPromise()};this.loadTranslations=async(t,e=d(this.currentRoute)||"")=>{!t||(this.setRoute(e),this.setLocale(t),await this.loading.toPromise())};t&&this.loadConfig(t),this.loaderTrigger.subscribe(()=>this.translationLoader())}};export{D as default};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sveltekit-i18n/base",
|
|
3
|
-
"version": "1.0.0-beta.
|
|
3
|
+
"version": "1.0.0-beta.2",
|
|
4
4
|
"description": "Base functionality of sveltekit-i18n library with a support for external message parsers.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -22,8 +22,7 @@
|
|
|
22
22
|
"lint": "eslint --fix --ext .ts,.js --ignore-path .gitignore ."
|
|
23
23
|
},
|
|
24
24
|
"files": [
|
|
25
|
-
"
|
|
26
|
-
"types"
|
|
25
|
+
"dist"
|
|
27
26
|
],
|
|
28
27
|
"pre-commit": [
|
|
29
28
|
"lint"
|