gettext-universal 1.0.22 → 1.0.23

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.
@@ -11,6 +11,14 @@ declare class Config {
11
11
  };
12
12
  }): void;
13
13
  getFallbacks(): string[] | undefined;
14
+ /**
15
+ * Returns the active locale. If `setLocale` was called with a
16
+ * function (a resolver), the resolver is invoked here so callers
17
+ * always receive a string — this lets apps plumb a per-request
18
+ * locale through AsyncLocalStorage (or similar) transparently.
19
+ *
20
+ * @returns {string | undefined}
21
+ */
14
22
  getLocale(): string | undefined;
15
23
  getLocales(): Record<string, Record<string, any>>;
16
24
  /**
@@ -20,10 +28,14 @@ declare class Config {
20
28
  setFallbacks(fallbacks: string[]): void;
21
29
  fallbacks: string[] | undefined;
22
30
  /**
23
- * @param {string} locale
31
+ * Sets the active locale. Accepts a string (global/static locale)
32
+ * OR a function that returns the current locale on each call
33
+ * (useful for per-request locale backed by AsyncLocalStorage).
34
+ *
35
+ * @param {string | (() => string | undefined)} locale
24
36
  * @returns {void}
25
37
  */
26
- setLocale(locale: string): void;
27
- locale: string | undefined;
38
+ setLocale(locale: string | (() => string | undefined)): void;
39
+ locale: string | (() => string | undefined) | undefined;
28
40
  }
29
41
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.js"],"names":[],"mappings":";AAgDA,6BAA2B;AA5C3B;IAEI,kDAAkD;IAClD,SADW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAC7B;IAGnB,oGAAoG;IACpG,mDADY;QAAC,IAAI,EAAE,MAAM,MAAM,EAAE,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG;YAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;SAAC,CAAA;KAAC,QAchF;IAED,qCAAwC;IACxC,gCAAkC;IAClC,kDAAoC;IAEpC;;;OAGG;IACH,wBAHW,MAAM,EAAE,GACN,IAAI,CAIhB;IADC,gCAA0B;IAG5B;;;OAGG;IACH,kBAHW,MAAM,GACJ,IAAI,CAKhB;IAFC,2BAAoB;CAGvB"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/config.js"],"names":[],"mappings":";AAuEA,6BAA2B;AAnE3B;IAEI,kDAAkD;IAClD,SADW,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAC7B;IAGnB,oGAAoG;IACpG,mDADY;QAAC,IAAI,EAAE,MAAM,MAAM,EAAE,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG;YAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;SAAC,CAAA;KAAC,QAchF;IAED,qCAAwC;IAExC;;;;;;;OAOG;IACH,aAFa,MAAM,GAAG,SAAS,CAK9B;IAED,kDAAoC;IAEpC;;;OAGG;IACH,wBAHW,MAAM,EAAE,GACN,IAAI,CAIhB;IADC,gCAA0B;IAG5B;;;;;;;OAOG;IACH,kBAHW,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,GACjC,IAAI,CAWhB;IARC,wBAJyB,MAAM,GAAG,SAAS,cAIvB;CASvB"}
@@ -18,7 +18,19 @@ class Config {
18
18
  }
19
19
  }
20
20
  getFallbacks() { return this.fallbacks; }
21
- getLocale() { return this.locale; }
21
+ /**
22
+ * Returns the active locale. If `setLocale` was called with a
23
+ * function (a resolver), the resolver is invoked here so callers
24
+ * always receive a string — this lets apps plumb a per-request
25
+ * locale through AsyncLocalStorage (or similar) transparently.
26
+ *
27
+ * @returns {string | undefined}
28
+ */
29
+ getLocale() {
30
+ if (typeof this.locale === "function")
31
+ return this.locale();
32
+ return this.locale;
33
+ }
22
34
  getLocales() { return this.locales; }
23
35
  /**
24
36
  * @param {string[]} fallbacks
@@ -28,14 +40,23 @@ class Config {
28
40
  this.fallbacks = fallbacks;
29
41
  }
30
42
  /**
31
- * @param {string} locale
43
+ * Sets the active locale. Accepts a string (global/static locale)
44
+ * OR a function that returns the current locale on each call
45
+ * (useful for per-request locale backed by AsyncLocalStorage).
46
+ *
47
+ * @param {string | (() => string | undefined)} locale
32
48
  * @returns {void}
33
49
  */
34
50
  setLocale(locale) {
35
51
  this.locale = locale;
36
- events.emit("onLocaleChange", { locale });
52
+ // Only emit for static locales. Function resolvers return a
53
+ // per-request locale dynamically — emitting undefined would
54
+ // mislead listeners into thinking the locale was cleared.
55
+ if (typeof locale !== "function") {
56
+ events.emit("onLocaleChange", { locale });
57
+ }
37
58
  }
38
59
  }
39
60
  const config = new Config();
40
61
  export default config;
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFBO0FBRWhDLE1BQU0sTUFBTTtJQUNWO1FBQ0Usa0RBQWtEO1FBQ2xELElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFBO0lBQ25CLENBQUM7SUFFRCxvR0FBb0c7SUFDcEcsa0NBQWtDLENBQUMsY0FBYztRQUMvQyxLQUFLLE1BQU0sVUFBVSxJQUFJLGNBQWMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQy9DLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtZQUVoRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsVUFBVSxFQUFFLENBQUMsQ0FBQTtZQUNwRSxDQUFDO1lBRUQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3ZCLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUE7WUFFdkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxZQUFZLENBQUE7UUFDckMsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFZLEtBQUssT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFBLENBQUMsQ0FBQztJQUN4QyxTQUFTLEtBQUssT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFBLENBQUMsQ0FBQztJQUNsQyxVQUFVLEtBQUssT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFBLENBQUMsQ0FBQztJQUVwQzs7O09BR0c7SUFDSCxZQUFZLENBQUMsU0FBUztRQUNwQixJQUFJLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQTtJQUM1QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLE1BQU07UUFDZCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUNwQixNQUFNLENBQUMsSUFBSSxDQUFDLGdCQUFnQixFQUFFLEVBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQTtJQUN6QyxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFBO0FBRTNCLGVBQWUsTUFBTSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBldmVudHMgZnJvbSBcIi4vZXZlbnRzLmpzXCJcblxuY2xhc3MgQ29uZmlnIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBhbnk+Pn0gKi9cbiAgICB0aGlzLmxvY2FsZXMgPSB7fVxuICB9XG5cbiAgLyoqIEBwYXJhbSB7e2tleXM6ICgpID0+IHN0cmluZ1tdLCAoa2V5OiBzdHJpbmcpOiB7ZGVmYXVsdDogUmVjb3JkPHN0cmluZywgYW55Pn19fSByZXF1aXJlQ29udGV4dCAqL1xuICBsb2FkVHJhbnNsYXRpb25zRnJvbVJlcXVpcmVDb250ZXh0KHJlcXVpcmVDb250ZXh0KSB7XG4gICAgZm9yIChjb25zdCBsb2NhbGVGaWxlIG9mIHJlcXVpcmVDb250ZXh0LmtleXMoKSkge1xuICAgICAgY29uc3QgbWF0Y2ggPSBsb2NhbGVGaWxlLm1hdGNoKC8oW2Etel17Mn0pLmpzJC8pXG5cbiAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBkZXRlY3QgbG9jYWxlIGZyb20gZmlsZTogJHtsb2NhbGVGaWxlfWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxvY2FsZSA9IG1hdGNoWzFdXG4gICAgICBjb25zdCB0cmFuc2xhdGlvbnMgPSByZXF1aXJlQ29udGV4dChsb2NhbGVGaWxlKS5kZWZhdWx0XG5cbiAgICAgIHRoaXMubG9jYWxlc1tsb2NhbGVdID0gdHJhbnNsYXRpb25zXG4gICAgfVxuICB9XG5cbiAgZ2V0RmFsbGJhY2tzKCkgeyByZXR1cm4gdGhpcy5mYWxsYmFja3MgfVxuICBnZXRMb2NhbGUoKSB7IHJldHVybiB0aGlzLmxvY2FsZSB9XG4gIGdldExvY2FsZXMoKSB7IHJldHVybiB0aGlzLmxvY2FsZXMgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBmYWxsYmFja3NcbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBzZXRGYWxsYmFja3MoZmFsbGJhY2tzKSB7XG4gICAgdGhpcy5mYWxsYmFja3MgPSBmYWxsYmFja3NcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbG9jYWxlXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgc2V0TG9jYWxlKGxvY2FsZSkge1xuICAgIHRoaXMubG9jYWxlID0gbG9jYWxlXG4gICAgZXZlbnRzLmVtaXQoXCJvbkxvY2FsZUNoYW5nZVwiLCB7bG9jYWxlfSlcbiAgfVxufVxuXG5jb25zdCBjb25maWcgPSBuZXcgQ29uZmlnKClcblxuZXhwb3J0IGRlZmF1bHQgY29uZmlnXG4iXX0=
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVosT0FBTyxNQUFNLE1BQU0sYUFBYSxDQUFBO0FBRWhDLE1BQU0sTUFBTTtJQUNWO1FBQ0Usa0RBQWtEO1FBQ2xELElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFBO0lBQ25CLENBQUM7SUFFRCxvR0FBb0c7SUFDcEcsa0NBQWtDLENBQUMsY0FBYztRQUMvQyxLQUFLLE1BQU0sVUFBVSxJQUFJLGNBQWMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQy9DLE1BQU0sS0FBSyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQTtZQUVoRCxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ1gsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsVUFBVSxFQUFFLENBQUMsQ0FBQTtZQUNwRSxDQUFDO1lBRUQsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3ZCLE1BQU0sWUFBWSxHQUFHLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUE7WUFFdkQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxZQUFZLENBQUE7UUFDckMsQ0FBQztJQUNILENBQUM7SUFFRCxZQUFZLEtBQUssT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFBLENBQUMsQ0FBQztJQUV4Qzs7Ozs7OztPQU9HO0lBQ0gsU0FBUztRQUNQLElBQUksT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLFVBQVU7WUFBRSxPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQTtRQUMzRCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUE7SUFDcEIsQ0FBQztJQUVELFVBQVUsS0FBSyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUEsQ0FBQyxDQUFDO0lBRXBDOzs7T0FHRztJQUNILFlBQVksQ0FBQyxTQUFTO1FBQ3BCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO0lBQzVCLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsU0FBUyxDQUFDLE1BQU07UUFDZCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQTtRQUVwQiw0REFBNEQ7UUFDNUQsNERBQTREO1FBQzVELDBEQUEwRDtRQUMxRCxJQUFJLE9BQU8sTUFBTSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsRUFBQyxNQUFNLEVBQUMsQ0FBQyxDQUFBO1FBQ3pDLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFBO0FBRTNCLGVBQWUsTUFBTSxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbmltcG9ydCBldmVudHMgZnJvbSBcIi4vZXZlbnRzLmpzXCJcblxuY2xhc3MgQ29uZmlnIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgLyoqIEB0eXBlIHtSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBhbnk+Pn0gKi9cbiAgICB0aGlzLmxvY2FsZXMgPSB7fVxuICB9XG5cbiAgLyoqIEBwYXJhbSB7e2tleXM6ICgpID0+IHN0cmluZ1tdLCAoa2V5OiBzdHJpbmcpOiB7ZGVmYXVsdDogUmVjb3JkPHN0cmluZywgYW55Pn19fSByZXF1aXJlQ29udGV4dCAqL1xuICBsb2FkVHJhbnNsYXRpb25zRnJvbVJlcXVpcmVDb250ZXh0KHJlcXVpcmVDb250ZXh0KSB7XG4gICAgZm9yIChjb25zdCBsb2NhbGVGaWxlIG9mIHJlcXVpcmVDb250ZXh0LmtleXMoKSkge1xuICAgICAgY29uc3QgbWF0Y2ggPSBsb2NhbGVGaWxlLm1hdGNoKC8oW2Etel17Mn0pLmpzJC8pXG5cbiAgICAgIGlmICghbWF0Y2gpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBkZXRlY3QgbG9jYWxlIGZyb20gZmlsZTogJHtsb2NhbGVGaWxlfWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGxvY2FsZSA9IG1hdGNoWzFdXG4gICAgICBjb25zdCB0cmFuc2xhdGlvbnMgPSByZXF1aXJlQ29udGV4dChsb2NhbGVGaWxlKS5kZWZhdWx0XG5cbiAgICAgIHRoaXMubG9jYWxlc1tsb2NhbGVdID0gdHJhbnNsYXRpb25zXG4gICAgfVxuICB9XG5cbiAgZ2V0RmFsbGJhY2tzKCkgeyByZXR1cm4gdGhpcy5mYWxsYmFja3MgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBhY3RpdmUgbG9jYWxlLiBJZiBgc2V0TG9jYWxlYCB3YXMgY2FsbGVkIHdpdGggYVxuICAgKiBmdW5jdGlvbiAoYSByZXNvbHZlciksIHRoZSByZXNvbHZlciBpcyBpbnZva2VkIGhlcmUgc28gY2FsbGVyc1xuICAgKiBhbHdheXMgcmVjZWl2ZSBhIHN0cmluZyDigJQgdGhpcyBsZXRzIGFwcHMgcGx1bWIgYSBwZXItcmVxdWVzdFxuICAgKiBsb2NhbGUgdGhyb3VnaCBBc3luY0xvY2FsU3RvcmFnZSAob3Igc2ltaWxhcikgdHJhbnNwYXJlbnRseS5cbiAgICpcbiAgICogQHJldHVybnMge3N0cmluZyB8IHVuZGVmaW5lZH1cbiAgICovXG4gIGdldExvY2FsZSgpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMubG9jYWxlID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiB0aGlzLmxvY2FsZSgpXG4gICAgcmV0dXJuIHRoaXMubG9jYWxlXG4gIH1cblxuICBnZXRMb2NhbGVzKCkgeyByZXR1cm4gdGhpcy5sb2NhbGVzIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gZmFsbGJhY2tzXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgc2V0RmFsbGJhY2tzKGZhbGxiYWNrcykge1xuICAgIHRoaXMuZmFsbGJhY2tzID0gZmFsbGJhY2tzXG4gIH1cblxuICAvKipcbiAgICogU2V0cyB0aGUgYWN0aXZlIGxvY2FsZS4gQWNjZXB0cyBhIHN0cmluZyAoZ2xvYmFsL3N0YXRpYyBsb2NhbGUpXG4gICAqIE9SIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBjdXJyZW50IGxvY2FsZSBvbiBlYWNoIGNhbGxcbiAgICogKHVzZWZ1bCBmb3IgcGVyLXJlcXVlc3QgbG9jYWxlIGJhY2tlZCBieSBBc3luY0xvY2FsU3RvcmFnZSkuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nIHwgKCgpID0+IHN0cmluZyB8IHVuZGVmaW5lZCl9IGxvY2FsZVxuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIHNldExvY2FsZShsb2NhbGUpIHtcbiAgICB0aGlzLmxvY2FsZSA9IGxvY2FsZVxuXG4gICAgLy8gT25seSBlbWl0IGZvciBzdGF0aWMgbG9jYWxlcy4gRnVuY3Rpb24gcmVzb2x2ZXJzIHJldHVybiBhXG4gICAgLy8gcGVyLXJlcXVlc3QgbG9jYWxlIGR5bmFtaWNhbGx5IOKAlCBlbWl0dGluZyB1bmRlZmluZWQgd291bGRcbiAgICAvLyBtaXNsZWFkIGxpc3RlbmVycyBpbnRvIHRoaW5raW5nIHRoZSBsb2NhbGUgd2FzIGNsZWFyZWQuXG4gICAgaWYgKHR5cGVvZiBsb2NhbGUgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgZXZlbnRzLmVtaXQoXCJvbkxvY2FsZUNoYW5nZVwiLCB7bG9jYWxlfSlcbiAgICB9XG4gIH1cbn1cblxuY29uc3QgY29uZmlnID0gbmV3IENvbmZpZygpXG5cbmV4cG9ydCBkZWZhdWx0IGNvbmZpZ1xuIl19
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  },
5
5
  "name": "gettext-universal",
6
6
  "type": "module",
7
- "version": "1.0.22",
7
+ "version": "1.0.23",
8
8
  "main": "build/index.js",
9
9
  "types": "build/index.d.ts",
10
10
  "files": [