@esgettext/runtime 1.0.0 → 1.1.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.
- package/README.md +6 -6
- package/{lib-esm → dist}/core/browser-environment.d.ts +1 -0
- package/dist/core/browser-environment.d.ts.map +1 -0
- package/{lib-esm → dist}/core/catalog-cache.d.ts +1 -0
- package/dist/core/catalog-cache.d.ts.map +1 -0
- package/dist/core/catalog-cache.spec.d.ts +2 -0
- package/dist/core/catalog-cache.spec.d.ts.map +1 -0
- package/dist/core/catalog-format.spec.d.ts +2 -0
- package/dist/core/catalog-format.spec.d.ts.map +1 -0
- package/{lib → dist}/core/catalog.d.ts +1 -0
- package/dist/core/catalog.d.ts.map +1 -0
- package/{lib → dist}/core/data-viewlet.d.ts +1 -0
- package/dist/core/data-viewlet.d.ts.map +1 -0
- package/dist/core/data-viewlet.spec.d.ts +2 -0
- package/dist/core/data-viewlet.spec.d.ts.map +1 -0
- package/{lib-esm → dist}/core/explode-locale.d.ts +1 -0
- package/dist/core/explode-locale.d.ts.map +1 -0
- package/dist/core/explode-locale.spec.d.ts +2 -0
- package/dist/core/explode-locale.spec.d.ts.map +1 -0
- package/{lib-esm → dist}/core/germanic-plural.d.ts +1 -0
- package/dist/core/germanic-plural.d.ts.map +1 -0
- package/{lib → dist}/core/gettext-impl.d.ts +1 -0
- package/dist/core/gettext-impl.d.ts.map +1 -0
- package/dist/core/gettext.spec.d.ts +2 -0
- package/dist/core/gettext.spec.d.ts.map +1 -0
- package/{lib-esm → dist}/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -0
- package/{lib → dist}/core/locale-container.d.ts +1 -0
- package/dist/core/locale-container.d.ts.map +1 -0
- package/dist/core/platform.d.ts +3 -0
- package/dist/core/platform.d.ts.map +1 -0
- package/{lib → dist}/core/resolve-impl.d.ts +1 -0
- package/dist/core/resolve-impl.d.ts.map +1 -0
- package/dist/core/resolve.spec.d.ts +2 -0
- package/dist/core/resolve.spec.d.ts.map +1 -0
- package/{lib-esm → dist}/core/select-locale.d.ts +1 -0
- package/dist/core/select-locale.d.ts.map +1 -0
- package/dist/core/select-locale.spec.d.ts +2 -0
- package/dist/core/select-locale.spec.d.ts.map +1 -0
- package/dist/core/set-locale-browser.spec.d.ts +2 -0
- package/dist/core/set-locale-browser.spec.d.ts.map +1 -0
- package/dist/core/set-locale-node.spec.d.ts +2 -0
- package/dist/core/set-locale-node.spec.d.ts.map +1 -0
- package/{lib-esm → dist}/core/split-locale.d.ts +1 -0
- package/dist/core/split-locale.d.ts.map +1 -0
- package/dist/core/split-locale.spec.d.ts +2 -0
- package/dist/core/split-locale.spec.d.ts.map +1 -0
- package/{lib → dist}/core/textdomain.d.ts +18 -17
- package/dist/core/textdomain.d.ts.map +1 -0
- package/dist/core/textdomain.spec.d.ts +2 -0
- package/dist/core/textdomain.spec.d.ts.map +1 -0
- package/{lib-esm → dist}/core/user-locales.d.ts +1 -0
- package/dist/core/user-locales.d.ts.map +1 -0
- package/dist/esgettext.cjs.js +868 -0
- package/dist/esgettext.cjs.js.map +1 -0
- package/dist/esgettext.esm.js +863 -0
- package/dist/esgettext.esm.js.map +1 -0
- package/dist/esgettext.min.js +2 -0
- package/dist/esgettext.min.js.map +1 -0
- package/dist/index-browser.d.ts +3 -0
- package/dist/index-browser.d.ts.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/parser/index.d.ts +4 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/{lib-esm → dist}/parser/parse-json-catalog.d.ts +1 -0
- package/dist/parser/parse-json-catalog.d.ts.map +1 -0
- package/{lib-esm → dist}/parser/parse-mo-catalog.d.ts +1 -0
- package/dist/parser/parse-mo-catalog.d.ts.map +1 -0
- package/dist/parser/parse-mo-catalog.spec.d.ts +2 -0
- package/dist/parser/parse-mo-catalog.spec.d.ts.map +1 -0
- package/dist/parser/parse-mo-json-catalog.d.ts +4 -0
- package/dist/parser/parse-mo-json-catalog.d.ts.map +1 -0
- package/dist/parser/parse-mo-json-catalog.spec.d.ts +2 -0
- package/dist/parser/parse-mo-json-catalog.spec.d.ts.map +1 -0
- package/{lib/transport/fs.d.ts → dist/transport/fs-browser.d.ts} +2 -1
- package/dist/transport/fs-browser.d.ts.map +1 -0
- package/{lib-esm → dist}/transport/fs.d.ts +1 -0
- package/dist/transport/fs.d.ts.map +1 -0
- package/{lib-esm → dist}/transport/http.d.ts +1 -0
- package/dist/transport/http.d.ts.map +1 -0
- package/dist/transport/http.spec.d.ts +2 -0
- package/dist/transport/http.spec.d.ts.map +1 -0
- package/{lib → dist}/transport/index.d.ts +2 -1
- package/dist/transport/index.d.ts.map +1 -0
- package/{lib → dist}/transport/transport.interface.d.ts +1 -0
- package/dist/transport/transport.interface.d.ts.map +1 -0
- package/package.json +30 -14
- package/_bundles/runtime.js +0 -1356
- package/_bundles/runtime.js.map +0 -1
- package/_bundles/runtime.min.js +0 -2
- package/_bundles/runtime.min.js.map +0 -1
- package/api-docs/assets/highlight.css +0 -127
- package/api-docs/assets/main.js +0 -59
- package/api-docs/assets/navigation.js +0 -1
- package/api-docs/assets/search.js +0 -1
- package/api-docs/assets/style.css +0 -1414
- package/api-docs/classes/Textdomain.html +0 -364
- package/api-docs/index.html +0 -222
- package/api-docs/interfaces/Catalog.html +0 -20
- package/api-docs/interfaces/CatalogEntries.html +0 -11
- package/api-docs/interfaces/LocaleContainer.html +0 -19
- package/api-docs/interfaces/Placeholders.html +0 -9
- package/api-docs/modules.html +0 -6
- package/lib/core/browser-environment.d.ts +0 -1
- package/lib/core/browser-environment.js +0 -12
- package/lib/core/browser-environment.js.map +0 -1
- package/lib/core/catalog-cache.d.ts +0 -10
- package/lib/core/catalog-cache.js +0 -39
- package/lib/core/catalog-cache.js.map +0 -1
- package/lib/core/catalog-cache.spec.d.ts +0 -1
- package/lib/core/catalog-cache.spec.js +0 -24
- package/lib/core/catalog-cache.spec.js.map +0 -1
- package/lib/core/catalog-format.spec.d.ts +0 -1
- package/lib/core/catalog-format.spec.js +0 -35
- package/lib/core/catalog-format.spec.js.map +0 -1
- package/lib/core/catalog.js +0 -3
- package/lib/core/catalog.js.map +0 -1
- package/lib/core/data-viewlet.js +0 -57
- package/lib/core/data-viewlet.js.map +0 -1
- package/lib/core/data-viewlet.spec.d.ts +0 -1
- package/lib/core/data-viewlet.spec.js +0 -62
- package/lib/core/data-viewlet.spec.js.map +0 -1
- package/lib/core/explode-locale.d.ts +0 -3
- package/lib/core/explode-locale.js +0 -37
- package/lib/core/explode-locale.js.map +0 -1
- package/lib/core/explode-locale.spec.d.ts +0 -1
- package/lib/core/explode-locale.spec.js +0 -41
- package/lib/core/explode-locale.spec.js.map +0 -1
- package/lib/core/germanic-plural.d.ts +0 -1
- package/lib/core/germanic-plural.js +0 -8
- package/lib/core/germanic-plural.js.map +0 -1
- package/lib/core/gettext-impl.js +0 -38
- package/lib/core/gettext-impl.js.map +0 -1
- package/lib/core/gettext.spec.d.ts +0 -1
- package/lib/core/gettext.spec.js +0 -391
- package/lib/core/gettext.spec.js.map +0 -1
- package/lib/core/index.d.ts +0 -4
- package/lib/core/index.js +0 -21
- package/lib/core/index.js.map +0 -1
- package/lib/core/locale-container.js +0 -3
- package/lib/core/locale-container.js.map +0 -1
- package/lib/core/path-separator.d.ts +0 -1
- package/lib/core/path-separator.js +0 -12
- package/lib/core/path-separator.js.map +0 -1
- package/lib/core/resolve-impl.js +0 -253
- package/lib/core/resolve-impl.js.map +0 -1
- package/lib/core/resolve.spec.d.ts +0 -1
- package/lib/core/resolve.spec.js +0 -345
- package/lib/core/resolve.spec.js.map +0 -1
- package/lib/core/select-locale.d.ts +0 -1
- package/lib/core/select-locale.js +0 -43
- package/lib/core/select-locale.js.map +0 -1
- package/lib/core/select-locale.spec.d.ts +0 -1
- package/lib/core/select-locale.spec.js +0 -27
- package/lib/core/select-locale.spec.js.map +0 -1
- package/lib/core/set-locale-browser.spec.d.ts +0 -1
- package/lib/core/set-locale-browser.spec.js +0 -17
- package/lib/core/set-locale-browser.spec.js.map +0 -1
- package/lib/core/set-locale-node.spec.d.ts +0 -1
- package/lib/core/set-locale-node.spec.js +0 -26
- package/lib/core/set-locale-node.spec.js.map +0 -1
- package/lib/core/split-locale.d.ts +0 -7
- package/lib/core/split-locale.js +0 -39
- package/lib/core/split-locale.js.map +0 -1
- package/lib/core/split-locale.spec.d.ts +0 -1
- package/lib/core/split-locale.spec.js +0 -59
- package/lib/core/split-locale.spec.js.map +0 -1
- package/lib/core/textdomain.js +0 -277
- package/lib/core/textdomain.js.map +0 -1
- package/lib/core/textdomain.spec.d.ts +0 -1
- package/lib/core/textdomain.spec.js +0 -33
- package/lib/core/textdomain.spec.js.map +0 -1
- package/lib/core/user-locales.d.ts +0 -1
- package/lib/core/user-locales.js +0 -12
- package/lib/core/user-locales.js.map +0 -1
- package/lib/index-browser.d.ts +0 -2
- package/lib/index-browser.js +0 -44
- package/lib/index-browser.js.map +0 -1
- package/lib/index.d.ts +0 -2
- package/lib/index.js +0 -37
- package/lib/index.js.map +0 -1
- package/lib/parser/index.d.ts +0 -2
- package/lib/parser/index.js +0 -19
- package/lib/parser/index.js.map +0 -1
- package/lib/parser/parse-json-catalog.d.ts +0 -3
- package/lib/parser/parse-json-catalog.js +0 -37
- package/lib/parser/parse-json-catalog.js.map +0 -1
- package/lib/parser/parse-json-catalog.spec.d.ts +0 -1
- package/lib/parser/parse-json-catalog.spec.js +0 -41
- package/lib/parser/parse-json-catalog.spec.js.map +0 -1
- package/lib/parser/parse-mo-catalog.d.ts +0 -2
- package/lib/parser/parse-mo-catalog.js +0 -86
- package/lib/parser/parse-mo-catalog.js.map +0 -1
- package/lib/parser/parse-mo-catalog.spec.d.ts +0 -1
- package/lib/parser/parse-mo-catalog.spec.js +0 -115
- package/lib/parser/parse-mo-catalog.spec.js.map +0 -1
- package/lib/transport/fs.js +0 -18
- package/lib/transport/fs.js.map +0 -1
- package/lib/transport/http.d.ts +0 -4
- package/lib/transport/http.js +0 -27
- package/lib/transport/http.js.map +0 -1
- package/lib/transport/http.spec.d.ts +0 -1
- package/lib/transport/http.spec.js +0 -119
- package/lib/transport/http.spec.js.map +0 -1
- package/lib/transport/index.js +0 -20
- package/lib/transport/index.js.map +0 -1
- package/lib/transport/transport.interface.js +0 -3
- package/lib/transport/transport.interface.js.map +0 -1
- package/lib-esm/core/browser-environment.js +0 -8
- package/lib-esm/core/browser-environment.js.map +0 -1
- package/lib-esm/core/catalog-cache.js +0 -36
- package/lib-esm/core/catalog-cache.js.map +0 -1
- package/lib-esm/core/catalog-cache.spec.d.ts +0 -1
- package/lib-esm/core/catalog-cache.spec.js +0 -22
- package/lib-esm/core/catalog-cache.spec.js.map +0 -1
- package/lib-esm/core/catalog-format.spec.d.ts +0 -1
- package/lib-esm/core/catalog-format.spec.js +0 -33
- package/lib-esm/core/catalog-format.spec.js.map +0 -1
- package/lib-esm/core/catalog.d.ts +0 -9
- package/lib-esm/core/catalog.js +0 -2
- package/lib-esm/core/catalog.js.map +0 -1
- package/lib-esm/core/data-viewlet.d.ts +0 -11
- package/lib-esm/core/data-viewlet.js +0 -54
- package/lib-esm/core/data-viewlet.js.map +0 -1
- package/lib-esm/core/data-viewlet.spec.d.ts +0 -1
- package/lib-esm/core/data-viewlet.spec.js +0 -60
- package/lib-esm/core/data-viewlet.spec.js.map +0 -1
- package/lib-esm/core/explode-locale.js +0 -33
- package/lib-esm/core/explode-locale.js.map +0 -1
- package/lib-esm/core/explode-locale.spec.d.ts +0 -1
- package/lib-esm/core/explode-locale.spec.js +0 -39
- package/lib-esm/core/explode-locale.spec.js.map +0 -1
- package/lib-esm/core/germanic-plural.js +0 -4
- package/lib-esm/core/germanic-plural.js.map +0 -1
- package/lib-esm/core/gettext-impl.d.ts +0 -10
- package/lib-esm/core/gettext-impl.js +0 -34
- package/lib-esm/core/gettext-impl.js.map +0 -1
- package/lib-esm/core/gettext.spec.d.ts +0 -1
- package/lib-esm/core/gettext.spec.js +0 -389
- package/lib-esm/core/gettext.spec.js.map +0 -1
- package/lib-esm/core/index.js +0 -5
- package/lib-esm/core/index.js.map +0 -1
- package/lib-esm/core/locale-container.d.ts +0 -8
- package/lib-esm/core/locale-container.js +0 -2
- package/lib-esm/core/locale-container.js.map +0 -1
- package/lib-esm/core/path-separator.d.ts +0 -1
- package/lib-esm/core/path-separator.js +0 -8
- package/lib-esm/core/path-separator.js.map +0 -1
- package/lib-esm/core/resolve-impl.d.ts +0 -3
- package/lib-esm/core/resolve-impl.js +0 -249
- package/lib-esm/core/resolve-impl.js.map +0 -1
- package/lib-esm/core/resolve.spec.d.ts +0 -1
- package/lib-esm/core/resolve.spec.js +0 -340
- package/lib-esm/core/resolve.spec.js.map +0 -1
- package/lib-esm/core/select-locale.js +0 -39
- package/lib-esm/core/select-locale.js.map +0 -1
- package/lib-esm/core/select-locale.spec.d.ts +0 -1
- package/lib-esm/core/select-locale.spec.js +0 -25
- package/lib-esm/core/select-locale.spec.js.map +0 -1
- package/lib-esm/core/set-locale-browser.spec.d.ts +0 -1
- package/lib-esm/core/set-locale-browser.spec.js +0 -15
- package/lib-esm/core/set-locale-browser.spec.js.map +0 -1
- package/lib-esm/core/set-locale-node.spec.d.ts +0 -1
- package/lib-esm/core/set-locale-node.spec.js +0 -24
- package/lib-esm/core/set-locale-node.spec.js.map +0 -1
- package/lib-esm/core/split-locale.js +0 -35
- package/lib-esm/core/split-locale.js.map +0 -1
- package/lib-esm/core/split-locale.spec.d.ts +0 -1
- package/lib-esm/core/split-locale.spec.js +0 -57
- package/lib-esm/core/split-locale.spec.js.map +0 -1
- package/lib-esm/core/textdomain.d.ts +0 -55
- package/lib-esm/core/textdomain.js +0 -274
- package/lib-esm/core/textdomain.js.map +0 -1
- package/lib-esm/core/textdomain.spec.d.ts +0 -1
- package/lib-esm/core/textdomain.spec.js +0 -31
- package/lib-esm/core/textdomain.spec.js.map +0 -1
- package/lib-esm/core/user-locales.js +0 -8
- package/lib-esm/core/user-locales.js.map +0 -1
- package/lib-esm/index-browser.d.ts +0 -2
- package/lib-esm/index-browser.js +0 -26
- package/lib-esm/index-browser.js.map +0 -1
- package/lib-esm/index.d.ts +0 -2
- package/lib-esm/index.js +0 -19
- package/lib-esm/index.js.map +0 -1
- package/lib-esm/parser/index.d.ts +0 -2
- package/lib-esm/parser/index.js +0 -3
- package/lib-esm/parser/index.js.map +0 -1
- package/lib-esm/parser/parse-json-catalog.js +0 -32
- package/lib-esm/parser/parse-json-catalog.js.map +0 -1
- package/lib-esm/parser/parse-json-catalog.spec.d.ts +0 -1
- package/lib-esm/parser/parse-json-catalog.spec.js +0 -39
- package/lib-esm/parser/parse-json-catalog.spec.js.map +0 -1
- package/lib-esm/parser/parse-mo-catalog.js +0 -82
- package/lib-esm/parser/parse-mo-catalog.js.map +0 -1
- package/lib-esm/parser/parse-mo-catalog.spec.d.ts +0 -1
- package/lib-esm/parser/parse-mo-catalog.spec.js +0 -113
- package/lib-esm/parser/parse-mo-catalog.spec.js.map +0 -1
- package/lib-esm/transport/fs.js +0 -15
- package/lib-esm/transport/fs.js.map +0 -1
- package/lib-esm/transport/http.js +0 -24
- package/lib-esm/transport/http.js.map +0 -1
- package/lib-esm/transport/http.spec.d.ts +0 -1
- package/lib-esm/transport/http.spec.js +0 -114
- package/lib-esm/transport/http.spec.js.map +0 -1
- package/lib-esm/transport/index.d.ts +0 -3
- package/lib-esm/transport/index.js +0 -4
- package/lib-esm/transport/index.js.map +0 -1
- package/lib-esm/transport/transport.interface.d.ts +0 -3
- package/lib-esm/transport/transport.interface.js +0 -2
- package/lib-esm/transport/transport.interface.js.map +0 -1
- package/webpack.common.js +0 -38
- package/webpack.dev.js +0 -9
- package/webpack.prod.js +0 -8
package/_bundles/runtime.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","mappings":"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","sources":["webpack://esgettext/webpack/universalModuleDefinition","webpack://esgettext/./src/core/browser-environment.ts","webpack://esgettext/./src/core/catalog-cache.ts","webpack://esgettext/./src/core/catalog.ts","webpack://esgettext/./src/core/data-viewlet.ts","webpack://esgettext/./src/core/explode-locale.ts","webpack://esgettext/./src/core/germanic-plural.ts","webpack://esgettext/./src/core/gettext-impl.ts","webpack://esgettext/./src/core/index.ts","webpack://esgettext/./src/core/locale-container.ts","webpack://esgettext/./src/core/path-separator.ts","webpack://esgettext/./src/core/resolve-impl.ts","webpack://esgettext/./src/core/select-locale.ts","webpack://esgettext/./src/core/split-locale.ts","webpack://esgettext/./src/core/textdomain.ts","webpack://esgettext/./src/core/user-locales.ts","webpack://esgettext/./src/index-browser.ts","webpack://esgettext/./src/parser/index.ts","webpack://esgettext/./src/parser/parse-json-catalog.ts","webpack://esgettext/./src/parser/parse-mo-catalog.ts","webpack://esgettext/./src/transport/fs.ts","webpack://esgettext/./src/transport/http.ts","webpack://esgettext/ignored|/Users/guidoflohr/javascript/esgettext/packages/runtime/src/transport|fs","webpack://esgettext/webpack/bootstrap","webpack://esgettext/webpack/before-startup","webpack://esgettext/webpack/startup","webpack://esgettext/webpack/after-startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"esgettext\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"esgettext\"] = factory();\n\telse\n\t\troot[\"esgettext\"] = factory();\n})(self, () => {\nreturn ","let isBrowser = false;\n\n/*\n * Force an execution environment. By default, the environment (NodeJS or\n * browser) is auto-detected. You can force the library to assume a certain\n * environment with this function.\n *\n * @param browser - whether to assume a browser or not\n * @returns the new setting.\n */\nexport function browserEnvironment(browser?: boolean): boolean {\n\tif (typeof browser !== 'undefined') {\n\t\tisBrowser = browser;\n\t}\n\n\treturn isBrowser;\n}\n","import { validateJsonCatalog } from '../parser';\nimport { Catalog } from './catalog';\n\ninterface CatalogCacheInterface {\n\t// Locale Key.\n\t[key: string]: {\n\t\t// Textdomain.\n\t\t[key: string]: Catalog | Promise<Catalog> | null;\n\t};\n}\n\n/*\n * Caches catalog lookups by path, locale, and textdomain.\n *\n * Failed lookups are stored as null values.\n *\n * It is also possible to store a Promise. In that case, if a request is\n * made to bind the textdomain, the promise is settled. Note that this\n * mechanism is never used for message lookup but only for loading the\n * catalog via resolve.\n */\nexport class CatalogCache {\n\tprivate static instance: CatalogCache;\n\tprivate static cache: CatalogCacheInterface = {};\n\n\tprivate constructor() {\n\t\t/* Singleton. */\n\t}\n\n\tstatic getInstance(): CatalogCache {\n\t\tif (!CatalogCache.instance) {\n\t\t\tCatalogCache.instance = new CatalogCache();\n\t\t}\n\n\t\treturn CatalogCache.instance;\n\t}\n\n\tstatic clear(): void {\n\t\tCatalogCache.cache = {};\n\t}\n\n\t/**\n\t * Lookup a Catalog for a given base path, locale, and textdomain.\n\t *\n\t * The locale key is usually the locale identifier (e.g. de-DE or sr\\@latin).\n\t * But it can also be a colon separated list of such locale identifiers.\n\t *\n\t *\n\t * @param localeKey - the locale key\n\t * @param textdomain - the textdomain\n\t * @returns the cached Catalog, a Promise or null for failure\n\t */\n\tpublic static lookup(\n\t\tlocaleKey: string,\n\t\ttextdomain: string,\n\t): Catalog | Promise<Catalog> | null {\n\t\tif (CatalogCache.cache[localeKey]) {\n\t\t\tconst ptr = CatalogCache.cache[localeKey];\n\t\t\tif (Object.prototype.hasOwnProperty.call(ptr, textdomain)) {\n\t\t\t\treturn ptr[textdomain];\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tpublic static store(\n\t\tlocaleKey: string,\n\t\ttextdomain: string,\n\t\tentry: Catalog | Promise<Catalog>,\n\t): void {\n\t\tif (Promise.resolve(entry) !== entry) {\n\t\t\t// Object.\n\t\t\tentry = validateJsonCatalog(entry as Catalog);\n\t\t}\n\n\t\tif (!CatalogCache.cache[localeKey]) {\n\t\t\tCatalogCache.cache[localeKey] = {};\n\t\t}\n\t\tCatalogCache.cache[localeKey][textdomain] = entry;\n\t}\n}\n","/**\n * The set of translations found in a [[`Catalog`]].\n *\n * This interface is used internally. You will only need it if you want to\n * write your own message retrieval method or want to inspect a loaded\n * [[`Catalog`]].\n *\n * The translations are looked up by their singular form in the original\n * language. The value is an array of strings. The first item is the singular\n * translation, the optional following items are the plural forms.\n *\n * If a translation has a message context, the key is the context joined\n * with the translation by a `'\\u0004'` character. For example, the key for\n * the msgid \"Open\" with the msgctxt \"Menu|File\" would be `Menu|File\\u0004Open`.\n */\nexport interface CatalogEntries {\n\t[key: string]: Array<string>;\n}\n\n/**\n * A [[`Catalog`]] is a container for a set of translations loaded from a `.json`\n * or a binary `.mo` file.\n *\n * This interface is used internally. You will only need it if you want to\n * write your own message retrieval method or want to inspect a loaded\n * [[`Catalog`]].\n */\nexport interface Catalog {\n\t/** The major revision number of the catalog, currently always 0. */\n\tmajor: number;\n\n\t/** The minor revision number of the catalog, currently always 0 or 1. */\n\tminor: number;\n\n\t/**\n\t * Compute the index of a plural form from a number of items. If a language\n\t * has one singular and two plural forms, the singular form would have\n\t * index 0 and the plural forms have index 1 and 2.\n\t *\n\t * The plural function would then compute one of 0, 1, or 2 from an\n\t * arbitrary non-negative integer.\n\t *\n\t * @param numItems - the number of items.\n\t *\n\t * @returns the index of the plural form.\n\t */\n\tpluralFunction(numItems: number): number;\n\n\t/** The actual translations. */\n\tentries: CatalogEntries;\n}\n","/*\n * A minimalistic buffer implementation that can only read 32 bit unsigned\n * integers and strings.\n */\nexport class DataViewlet {\n\tprivate decoder: TextDecoder;\n\tprivate _encoding: string;\n\n\t/*\n\t * Create a DataViewlet instance. All encodings that are supported by\n\t * the runtime environments `TextDecoder` interface.\n\t *\n\t * @param array - a `Unit8Array` view on the binary buffer\n\t * @param encoding - encoding of strings, defaults to utf-8\n\t */\n\tconstructor(\n\t\tprivate readonly array: Uint8Array,\n\t\tencoding = 'utf-8',\n\t) {\n\t\tthis.decoder = new TextDecoder(encoding);\n\t\tthis._encoding = encoding;\n\t}\n\n\t/**\n\t * Get the encoding for strings.\n\t *\n\t * @returns the encoding in use\n\t */\n\tget encoding(): string {\n\t\treturn this._encoding;\n\t}\n\n\t/**\n\t * Switch to a new encoding.\n\t *\n\t * @param encoding - new encoding to use\n\t */\n\tset encoding(encoding: string) {\n\t\tthis.decoder = new TextDecoder(encoding);\n\t\tthis._encoding = encoding;\n\t}\n\t/*\n\t * Reads an unsigned 32-bit integer from the buffer at\n\t * the specified offset as big-endian.\n\t *\n\t * @param offset - Number of bytes to skip before starting to read.\n\t * Must satisfy `0 <= offset <= buf.length - 4`.\n\t * Default: 0.\n\t * @returns the 32-bit unsigned integer at position `offset`.s\n\t */\n\treadUInt32BE(offset = 0): number {\n\t\tif (offset + 4 > this.array.byteLength + this.array.byteOffset) {\n\t\t\tthrow new Error('read past array end');\n\t\t}\n\n\t\treturn (\n\t\t\t(((this.array[offset] << 24) >>> 0) |\n\t\t\t\t(this.array[offset + 1] << 16) |\n\t\t\t\t(this.array[offset + 2] << 8) |\n\t\t\t\tthis.array[offset + 3]) >>>\n\t\t\t0\n\t\t);\n\t}\n\n\t/*\n\t * Reads an unsigned 32-bit integer from the buffer at\n\t * the specified offset as little-endian.\n\t *\n\t * @param offset - Number of bytes to skip before starting to read.\n\t * Must satisfy `0 <= offset <= buf.length - 4`.\n\t * Default: 0.\n\t * @returns the 32-bit unsigned integer at position `offset`.s\n\t */\n\treadUInt32LE(offset = 0): number {\n\t\tif (offset + 4 > this.array.byteLength + this.array.byteOffset) {\n\t\t\tthrow new Error('read past array end');\n\t\t}\n\n\t\treturn (\n\t\t\t(((this.array[offset + 3] << 24) >>> 0) |\n\t\t\t\t(this.array[offset + 2] << 16) |\n\t\t\t\t(this.array[offset + 1] << 8) |\n\t\t\t\tthis.array[offset]) >>>\n\t\t\t0\n\t\t);\n\t}\n\n\t/*\n\t * Read a string at a specified offset.\n\t *\n\t * @param offset - to beginning of buffer in bytes\n\t * @param length - of the string to read in bytes or to the end of the\n\t * buffer if not specified.\n\t */\n\treadString(offset = 0, length?: number): string {\n\t\tif (offset + (length as number)> this.array.byteLength + this.array.byteOffset) {\n\t\t\tthrow new Error('read past array end');\n\t\t}\n\n\t\tif (typeof length === 'undefined') {\n\t\t\tlength = this.array.byteLength - offset;\n\t\t}\n\n\t\treturn this.decoder.decode(this.array.slice(offset, offset + length));\n\t}\n}\n","import { SplitLocale } from './split-locale';\n\nexport type ExplodedLocale = Array<Array<string>>;\n\nexport function explodeLocale(\n\tlocale: SplitLocale,\n\tvary?: boolean,\n): ExplodedLocale {\n\tconst retval: ExplodedLocale = [];\n\tconst lsep = locale.underscoreSeparator ? '_' : '-';\n\tlet i = vary ? 0 : locale.tags.length - 1;\n\tconst hasCharset = typeof locale.charset !== 'undefined';\n\tconst hasModifier = typeof locale.modifier !== 'undefined';\n\n\tconst charsets = hasCharset ? [locale.charset as string] : [''];\n\tif (vary && hasCharset) {\n\t\tconst charset = locale.charset as string;\n\t\tconst ucCharset = charset.toUpperCase();\n\t\tif (ucCharset !== charset) {\n\t\t\tcharsets.push(ucCharset);\n\t\t}\n\t\tcharsets.push('');\n\t}\n\n\tfor (; i < locale.tags.length; ++i) {\n\t\tconst lingua = locale.tags.slice(0, i + 1).join(lsep);\n\t\tconst ids = new Array<string>();\n\n\t\tcharsets.forEach(charset => {\n\t\t\tlet id = charset.length ? lingua + '.' + charset : lingua;\n\t\t\tif (hasModifier) {\n\t\t\t\tid += '@' + locale.modifier;\n\t\t\t}\n\t\t\tids.push(id);\n\t\t});\n\t\tretval.push(ids);\n\t}\n\n\treturn retval;\n}\n","/*\n * Function for germanic plural. Returns singular (0) for 1 item, and\n * 1 for everything else.\n *\n * @param numItems - number of items\n * @returns the index into the plural translations\n */\nexport function germanicPlural(numItems: number): number {\n\treturn numItems === 1 ? 0 : 1;\n}\n","import { Catalog } from './catalog';\nimport { germanicPlural } from './germanic-plural';\n\ninterface GettextImplArgs {\n\tmsgid: string;\n\tcatalog: Catalog;\n\tmsgidPlural?: string;\n\tnumItems?: number;\n\tmsgctxt?: string;\n}\n\nexport function gettextImpl(args: GettextImplArgs): string {\n\tconst key =\n\t\ttypeof args.msgctxt === 'undefined'\n\t\t\t? args.msgid\n\t\t\t: args.msgctxt + '\\u0004' + args.msgid;\n\tconst translations = args.catalog.entries[key];\n\tconst numItems = args.numItems ?? 1;\n\n\tif (translations && translations.length) {\n\t\tif (typeof args.msgidPlural === 'undefined') {\n\t\t\treturn translations[0];\n\t\t} else {\n\t\t\tlet pluralForm = args.catalog.pluralFunction(numItems);\n\t\t\tif (pluralForm >= translations.length) {\n\t\t\t\tif (translations.length === 1) {\n\t\t\t\t\treturn translations[0];\n\t\t\t\t} else {\n\t\t\t\t\tpluralForm = germanicPlural(numItems);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn translations[pluralForm];\n\t\t}\n\t} else if (typeof args.msgidPlural !== 'undefined') {\n\t\tconst pluralform = args.catalog.pluralFunction(numItems);\n\t\tif (pluralform === 1) {\n\t\t\treturn args.msgidPlural;\n\t\t}\n\t}\n\n\treturn args.msgid;\n}\n","export * from './catalog';\nexport * from './textdomain';\nexport * from './catalog-cache';\nexport * from './locale-container';\n","import { Catalog } from './catalog';\n\n/**\n * An object storing locale information. It resembles the directory structure\n * that [[`Catalog`]] objects are found in.\n *\n * Example, if your textdomain is 'myapp':\n *\n * <pre class=\"language-javascript\"><code class=\"language-javascript\">\\{\n * fr: \\{\n * LC_MESSAGES: \\{\n * \t myapp: catalogs['fr']\n * \\}\n * \\},\n * 'de-DE': \\{\n * LC_MESSAGES: \\{\n * myapp: catalogs['de-DE']\n * \\}\n * \\}\n * \\}\n * </code></pre>\n */\nexport interface LocaleContainer {\n\t/** A language code like 'fr' or 'de-DE'. */\n\t[key: string]: {\n\t\t/** The Locale category, always 'LC_MESSAGES'. */\n\t\t[key: string]: {\n\t\t\t/** The textdomain. */\n\t\t\t[key: string]: Catalog;\n\t\t};\n\t};\n}\n","let usePathSeparator = '/';\n\n/*\n * Get/set the path separator to use. This should only be imported from\n * the main entry point for the browser resp. node.\n */\nexport function pathSeparator(sep?: string): string {\n\tif (typeof sep !== 'undefined') {\n\t\tusePathSeparator = sep;\n\t}\n\n\treturn usePathSeparator;\n}\n","import { TransportHttp } from '../transport/http';\nimport { TransportFs } from '../transport/fs';\nimport { Transport } from '../transport/transport.interface';\nimport { parseJsonCatalog, parseMoCatalog } from '../parser';\nimport { browserEnvironment } from './browser-environment';\nimport { Catalog, CatalogEntries } from './catalog';\nimport { SplitLocale, splitLocale } from './split-locale';\nimport { germanicPlural } from './germanic-plural';\nimport { CatalogCache } from './catalog-cache';\nimport { explodeLocale, ExplodedLocale } from './explode-locale';\nimport { LocaleContainer } from './locale-container';\n\n/* eslint-disable no-console */\n\ntype PluralFunction = (numItems: number) => number;\n\nfunction loadCatalog(url: string, format: string): Promise<Catalog> {\n\tlet transport;\n\n\t// Check whether this is a valid URL.\n\ttry {\n\t\tconst parsedURL = new URL(url);\n\t\tif (\n\t\t\tparsedURL.protocol === 'https:' ||\n\t\t\tparsedURL.protocol === 'http:' ||\n\t\t\tparsedURL.protocol === 'file:'\n\t\t) {\n\t\t\ttransport = 'http';\n\t\t} else {\n\t\t\tthrow new Error(`unsupported scheme ${parsedURL.protocol}`);\n\t\t}\n\t} catch (e) {\n\t\tif (browserEnvironment()) {\n\t\t\ttransport = 'http';\n\t\t} else {\n\t\t\ttransport = 'fs';\n\t\t}\n\t}\n\n\tlet transportInstance: Transport;\n\tif (transport === 'http') {\n\t\ttransportInstance = new TransportHttp();\n\t} else {\n\t\ttransportInstance = new TransportFs();\n\t}\n\n\ttype Validator = (data: ArrayBuffer) => Catalog;\n\tlet validator: Validator;\n\tif ('json' === format) {\n\t\tvalidator = parseJsonCatalog;\n\t} else {\n\t\tvalidator = parseMoCatalog;\n\t}\n\treturn new Promise<Catalog>((resolve, reject) => {\n\t\ttransportInstance\n\t\t\t.loadFile(url)\n\t\t\t.then(data => {\n\t\t\t\tresolve(validator(data));\n\t\t\t})\n\t\t\t.catch(e => reject(e));\n\t});\n}\n\nfunction assemblePath(\n\tbase: string,\n\tid: string,\n\tdomainname: string,\n\textender: string,\n): string {\n\treturn `${base}/${id}/LC_MESSAGES/${domainname}.${extender}`;\n}\n\nfunction loadLanguageFromObject(\n\tids: Array<string>,\n\tbase: LocaleContainer,\n\tdomainname: string,\n): Promise<Catalog> {\n\tlet catalog: Catalog;\n\n\tfor (let i = 0; i < ids.length; ++i) {\n\t\tconst id = ids[0];\n\t\t// Language exists?\n\t\tif (!Object.prototype.hasOwnProperty.call(base, id)) {\n\t\t\tcontinue;\n\t\t}\n\t\t// LC_MESSAGES?\n\t\tif (!Object.prototype.hasOwnProperty.call(base[id], 'LC_MESSAGES')) {\n\t\t\tcontinue;\n\t\t}\n\t\t// Textdomain?\n\t\tif (\n\t\t\t!Object.prototype.hasOwnProperty.call(base[id].LC_MESSAGES, domainname)\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tcatalog = base[id].LC_MESSAGES[domainname];\n\t}\n\n\treturn new Promise<Catalog>((resolve, reject) => {\n\t\tif (catalog) {\n\t\t\tresolve(catalog);\n\t\t} else {\n\t\t\treject();\n\t\t}\n\t});\n}\n\n/*\n * First tries to load a catalog with the specified charset, then with the\n * charset converted to uppercase (if it differs from the original charset),\n * and finally without a charset.\n */\nasync function loadLanguage(\n\tids: Array<string>,\n\tbase: string | LocaleContainer,\n\tdomainname: string,\n\tformat: string,\n): Promise<Catalog> {\n\tif (typeof base === 'object' && base !== null) {\n\t\treturn loadLanguageFromObject(ids, base, domainname);\n\t}\n\n\treturn new Promise((resolve, reject) => {\n\t\ttype CatalogLoader = (url: string) => Promise<Catalog>;\n\n\t\tconst tries = new Array<CatalogLoader>();\n\t\tids.forEach(id => {\n\t\t\ttries.push(() =>\n\t\t\t\tloadCatalog(\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n\t\t\t\t\tassemblePath(base as string, id, domainname, format),\n\t\t\t\t\tformat,\n\t\t\t\t),\n\t\t\t);\n\t\t});\n\n\t\ttries\n\t\t\t.reduce(\n\t\t\t\t(promise, fn: CatalogLoader) => promise.catch(fn),\n\t\t\t\tPromise.reject(),\n\t\t\t)\n\t\t\t.then(value => resolve(value))\n\t\t\t.catch(e => reject(e));\n\t});\n}\n\nasync function loadDomain(\n\texploded: ExplodedLocale,\n\tlocaleKey: string,\n\tbase: string | LocaleContainer,\n\tdomainname: string,\n\tformat: string,\n): Promise<Catalog> {\n\tconst entries: CatalogEntries = {};\n\n\tconst catalog: Catalog = {\n\t\tmajor: 0,\n\t\tminor: 0,\n\t\tpluralFunction: germanicPlural,\n\t\tentries,\n\t};\n\n\tconst cacheHit = CatalogCache.lookup(localeKey, domainname);\n\tif (cacheHit !== null) {\n\t\t// Promise?\n\t\tif (Promise.resolve(cacheHit) === cacheHit) {\n\t\t\treturn cacheHit;\n\t\t} else {\n\t\t\t// Normal cache hit.\n\t\t\treturn new Promise(resolve => resolve(cacheHit));\n\t\t}\n\t}\n\n\tconst promises = new Array<Promise<void | Catalog>>();\n\tconst results = new Array<Catalog>();\n\n\texploded.forEach((tries, i) => {\n\t\tconst p = loadLanguage(tries, base, domainname, format)\n\t\t\t.then(catalog => (results[i] = catalog))\n\t\t\t.catch(() => {\n\t\t\t\t/* ignore */\n\t\t\t});\n\t\tpromises.push(p);\n\t});\n\n\tawait Promise.all(promises);\n\n\tresults.forEach(result => {\n\t\tcatalog.major = result.major;\n\t\tcatalog.minor = result.minor;\n\t\tcatalog.entries = { ...catalog.entries, ...result.entries };\n\t});\n\n\treturn new Promise(resolve => {\n\t\tresolve(catalog);\n\t});\n}\n\nfunction pluralExpression(str: string): PluralFunction {\n\tconst tokens = str\n\t\t.replace(/[ \\t\\r\\013\\014]/g, '')\n\t\t.replace(/;$/, '')\n\t\t// Do NOT allow square brackets here. JSFuck!\n\t\t.split(/[<>!=]=|&&|\\|\\||[-!*/%+<>=?:;]/);\n\n\tfor (let i = 0; i < tokens.length; ++i) {\n\t\tconst token = tokens[i].replace(/^\\(+/, '').replace(/\\)+$/, '');\n\t\tif (\n\t\t\ttoken !== 'nplurals' &&\n\t\t\ttoken !== 'plural' &&\n\t\t\ttoken !== 'n' &&\n\t\t\t// Does not catch invalid octal numbers but the compiler\n\t\t\t// takes care of that.\n\t\t\tnull === /^[0-9]+$/.exec(token)\n\t\t) {\n\t\t\tthrow new Error('invalid plural function');\n\t\t}\n\t}\n\n\tconst code = 'var nplurals = 1, plural = 0;' + str + '; return 0 + plural';\n\n\t// This may throw an exception!\n\t/* eslint-disable @typescript-eslint/no-implied-eval */\n\treturn new Function('n', code) as PluralFunction;\n}\n\nfunction setPluralFunction(catalog: Catalog): Catalog {\n\tif (!Object.prototype.hasOwnProperty.call(catalog.entries, '')) {\n\t\treturn catalog;\n\t}\n\n\tconst headers = catalog.entries[''][0].split('\\n');\n\theaders.forEach(header => {\n\t\tconst tokens = header.split(':');\n\t\tif ('plural-forms' === (tokens.shift() as string).toLowerCase()) {\n\t\t\tconst code = tokens.join(':');\n\t\t\tcatalog.pluralFunction = pluralExpression(code);\n\t\t}\n\t});\n\n\treturn catalog;\n}\n\nexport function resolveImpl(\n\tdomainname: string,\n\tpath: string | LocaleContainer,\n\tformat: string,\n\tlocaleKey: string,\n): Promise<Catalog> {\n\tconst defaultCatalog: Catalog = {\n\t\tmajor: 0,\n\t\tminor: 0,\n\t\tpluralFunction: germanicPlural,\n\t\tentries: {},\n\t};\n\n\tif (localeKey === 'C' || localeKey === 'POSIX') {\n\t\treturn new Promise(resolve => resolve(defaultCatalog));\n\t}\n\n\treturn new Promise(resolve => {\n\t\tconst exploded = explodeLocale(splitLocale(localeKey) as SplitLocale, true);\n\t\tloadDomain(exploded, localeKey, path, domainname, format)\n\t\t\t.then(catalog => {\n\t\t\t\tsetPluralFunction(catalog);\n\t\t\t\tCatalogCache.store(localeKey, domainname, catalog);\n\t\t\t\tresolve(catalog);\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tCatalogCache.store(localeKey, domainname, defaultCatalog);\n\t\t\t\tresolve(defaultCatalog);\n\t\t\t});\n\t});\n}\n","import { splitLocale } from './split-locale';\n\nfunction tagsEqual(left: Array<string>, right: Array<string>): boolean {\n\tif (left.length !== right.length) {\n\t\treturn false;\n\t}\n\n\tfor (let i = 0; i < left.length; ++i) {\n\t\tif (left[i].toLowerCase() !== right[i].toLowerCase()) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nexport function selectLocale(\n\tsupported: Array<string>,\n\trequested: Array<string>,\n): string {\n\tlet languageMatch: string = '';\n\n\tfor (let i = 0; i < requested.length; ++i) {\n\t\tconst wanted = splitLocale(requested[i]);\n\t\tif (!wanted) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor (let j = 0; j < supported.length; ++j) {\n\t\t\tconst got = splitLocale(supported[j]);\n\t\t\tif (!got) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (tagsEqual(wanted.tags, got.tags)) {\n\t\t\t\treturn supported[j];\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!languageMatch.length &&\n\t\t\t\twanted.tags[0].toLowerCase() === got.tags[0].toLowerCase()\n\t\t\t) {\n\t\t\t\tlanguageMatch = supported[j];\n\t\t\t}\n\t\t}\n\t}\n\n\tif (languageMatch.length) {\n\t\treturn languageMatch;\n\t}\n\n\treturn 'C';\n}\n","const tagHyphenRegex = new RegExp('^[a-z0-9]+(?:-[a-z0-9]+)*$', 'i');\nconst tagUnderscoreRegex = new RegExp('^[a-z0-9]+(?:_[a-z0-9]+)*$', 'i');\n\nexport interface SplitLocale {\n\ttags: Array<string>;\n\tunderscoreSeparator: boolean;\n\tcharset?: string;\n\tmodifier?: string;\n}\n\nexport function splitLocale(locale: string): SplitLocale | null {\n\tlet charset: string = '', modifier: string = '';\n\n\tconst underscoreSeparator = locale.includes('_');\n\n\tlocale = locale.replace(/@([a-z]+)$/i, (_, match: string) => {\n\t\tmodifier = match;\n\t\treturn '';\n\t});\n\n\tlocale = locale.replace(/\\.([-0-9a-z]+)$/i, (_, match: string) => {\n\t\tcharset = match;\n\t\treturn '';\n\t});\n\n\tif (underscoreSeparator) {\n\t\tif (!tagUnderscoreRegex.exec(locale)) {\n\t\t\treturn null;\n\t\t}\n\t} else {\n\t\tif (!tagHyphenRegex.exec(locale)) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tconst separator = underscoreSeparator ? '_' : '-';\n\tconst tags = locale.split(separator);\n\n\tconst split: SplitLocale = { tags: tags, underscoreSeparator };\n\n\tif (charset.length) {\n\t\tsplit.charset = charset;\n\t}\n\n\tif (modifier.length) {\n\t\tsplit.modifier = modifier;\n\t}\n\n\treturn split;\n}\n","import { resolveImpl } from './resolve-impl';\nimport { CatalogCache } from './catalog-cache';\nimport { Catalog } from './catalog';\nimport { browserEnvironment } from './browser-environment';\nimport { gettextImpl } from './gettext-impl';\nimport { germanicPlural } from './germanic-plural';\nimport { splitLocale } from './split-locale';\nimport { pathSeparator } from './path-separator';\nimport { userLocales } from './user-locales';\nimport { selectLocale } from './select-locale';\nimport { LocaleContainer } from './locale-container';\n\n/**\n * Represents a mapping of placeholder strings to the values that they should be replaced with.\n * Placeholders must match the regular expression `/^[_a-zA-Z][_a-zA-Z0-9]*$/`.\n * @remarks\n * Placeholders provide a way to dynamically replace certain strings in a translatable message.\n *\n * @example\n * ```typescript\n * const placeholders: Placeholders = {\n * \t'name': 'John Doe',\n * \t'age': 30,\n * \t// Add more placeholders as needed\n * };\n * ```\n *\n * A typical call would look like this:\n *\n * ```typescript\n * console.log(gtx._x('User {name} is {age} years old.'));\n * ```\n * @public\n */\nexport interface Placeholders {\n\t/* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n\t[placeholder: string]: any;\n}\n\n/**\n * A Textdomain is a container for an esgettext configuration and all loaded\n * LocaleContainer for the textual domain selected.\n *\n * The actual translation methods have quite funny names like `_()` or\n * `_x()`. The purpose of this naming convention is to make the\n * internationalization of your programs as little obtrusive as possible.\n * Most of the times you just have to exchange\n *\n * ```\n * doSomething('Hello, world!');\n * ```\n *\n * with\n *\n * ```\n * doSomething(gtx._('Hello, world!'));\n * ```\n *\n * Besides, depending on the string extractor you are using, it may be useful\n * that the method names do not collide with method names from other packages.\n */\nexport class Textdomain {\n\t// FIXME! Use a default export instead?\n\tprivate static domains: { [key: string]: Textdomain } = {};\n\tprivate static readonly cache = CatalogCache.getInstance();\n\tprivate static boundDomains: { [key: string]: string | LocaleContainer } = {};\n\tprivate static _locale = 'C';\n\n\tprivate domain: string;\n\tprivate _catalogFormat = 'json';\n\tprivate catalog: Catalog;\n\n\tprivate constructor() {\n\t\t/* Prevent instantiation. */\n\t}\n\n\t/**\n\t * Instantiate a Textdomain object. Textdomain objects are singletons\n\t * for each textdomain identifier.\n\t *\n\t * @param textdomain - the textdomain of your application or library.\n\t */\n\tgetInstance: (textdomain: string) => Textdomain;\n\n\t/**\n\t * Retrieve a translation for a string.\n\t *\n\t * @param msgid - the string to translate\n\t *\n\t * @returns the translated string\n\t */\n\t_: (msgid: string) => string;\n\n\t/**\n\t * Retrieve a translation for a string containing a possible plural.\n\t * You will almost always want to call {@link _nx} instead so that\n\t * you can interpolate the number of items into the strings.\n\t *\n\t * @param msgid - the string in the singular\n\t * @param msgidPlural - the string in the plural\n\t * @param numItems - the number of items\n\t *\n\t * @returns the translated string\n\t */\n\t_n: (msgid: string, msgidPlural: string, numItems: number) => string;\n\n\t/**\n\t * Translate a string with a context.\n\t *\n\t * @param msgctxt - the message context\n\t * @param msgid - the string to translate\n\t *\n\t * @returns the translated string\n\t */\n\t_p: (msgctxt: string, msgid: string) => string;\n\n\t/**\n\t * The method `_np()` combines `_n()` with `_p()`.\n\t * You will almost always want to call {@link _npx} instead so that\n\t * you can interpolate the number of items into the strings.\n\n\t *\n\t * @param msgctxt - the message context\n\t * @param msgid - the message id\n\t * @param placeholders - a dictionary with placehoders\n\t * @returns the translated string\n\t */\n\t_np: (\n\t\tmsgctxt: string,\n\t\tmsgid: string,\n\t\tmsgidPlural: string,\n\t\tnumItems: number,\n\t) => string;\n\n\t/**\n\t * Translate a string with placeholders. The placeholders should be\n\t * wrapped into curly braces and must match the regular expression\n\t * \"[_a-zA-Z][_a-zA-Z0-9]*\".\n\t *\n\t * @param msgid - the msgid to translate\n\t * @param placeholders - an optional dictionary of placeholders\n\t *\n\t * @returns the translated string with placeholders expanded\n\t */\n\t_x: (msgid: string, placeholders?: Placeholders) => string;\n\n\t/**\n\t * Translate a string with a plural expression with placeholders.\n\t *\n\t * @param msgid - the string in the singular\n\t * @param msgidPlural - the string in the plural\n\t * @param numItems - the number of items\n\t * @param placeholders - an optional dictionary of placeholders\n\t *\n\t * @returns the translated string\n\t */\n\t_nx: (\n\t\tmsgid: string,\n\t\tmsgidPlural: string,\n\t\tnumItems: number,\n\t\tplaceholders?: Placeholders,\n\t) => string;\n\n\t/**\n\t * The method `_px()` combines `_p()` with `_x()`.\n\t *\n\t * @param msgctxt - the message context\n\t * @param msgid - the message id\n\t * @param placeholders - an optional dictionary with placehoders\n\t * @returns the translated string\n\t */\n\t_px: (msgctxt: string, msgid: string, placeholders?: Placeholders) => string;\n\n\t/**\n\t * The method `_npx()` brings it all together. It combines `_n()` and\n\t * `_p()` and `_x()`.\n\t *\n\t * @param msgctxt - the message context\n\t * @param msgid - the message id\n\t * @param msgidPlural - the plural string\n\t * @param numItems - the number of items\n\t * @param placeholders - an optional dictionary with placehoders\n\t * @returns the translated string\n\t */\n\t_npx: (\n\t\tmsgctxt: string,\n\t\tmsgid: string,\n\t\tmsgidPlural: string,\n\t\tnumItems: number,\n\t\tplaceholders?: Placeholders,\n\t) => string;\n\n\tprivate static getCatalog(locale: string, textdomain: string): Catalog {\n\t\tconst catalog = CatalogCache.lookup(locale, textdomain);\n\t\tif (!catalog || Promise.resolve(catalog) === catalog) {\n\t\t\treturn {\n\t\t\t\tmajor: 0,\n\t\t\t\tminor: 0,\n\t\t\t\tpluralFunction: germanicPlural,\n\t\t\t\tentries: {},\n\t\t\t};\n\t\t}\n\n\t\treturn catalog as Catalog;\n\t}\n\n\t/**\n\t * Retrieve a translation for a string with a fixed locale.\n\t *\n\t * @param locale - the locale identifier\n\t * @param msgid - the string to translate\n\t *\n\t * @returns the translated string\n\t */\n\t_l: (locale: string, msgid: string) => string;\n\n\t/**\n\t * Retrieve a translation for a string containing a possible plural with\n\t * a fixed locale.\n\t * You will almost always want to call {@link _nx} instead so that\n\t * you can interpolate the number of items into the strings.\n\t *\n\t * @param locale - the locale identifier\n\t * @param msgid - the string in the singular\n\t * @param msgidPlural - the string in the plural\n\t * @param numItems - the number of items\n\t *\n\t * @returns the translated string\n\t */\n\t_ln: (\n\t\tlocale: string,\n\t\tmsgid: string,\n\t\tmsgidPlural: string,\n\t\tnumItems: number,\n\t) => string;\n\n\t/**\n\t * Translate a string with a context with a fixed locale.\n\t *\n\t * @param locale - the locale identifier\n\t * @param msgctxt - the message context\n\t * @param msgid - the string to translate\n\t *\n\t * @returns the translated string\n\t */\n\t_lp: (locale: string, msgctxt: string, msgid: string) => string;\n\n\t/**\n\t * The method `_lnp()` combines `_ln()` with `_lp()`.\n\t * You will almost always want to call {@link _npx} instead so that\n\t * you can interpolate the number of items into the strings.\n\n\t *\n\t * @param locale - the locale identifier\n\t * @param msgctxt - the message context\n\t * @param msgid - the message id\n\t * @param placeholders - a dictionary with placehoders\n\t * @returns the translated string\n\t */\n\t_lnp: (\n\t\tlocale: string,\n\t\tmsgctxt: string,\n\t\tmsgid: string,\n\t\tmsgidPlural: string,\n\t\tnumItems: number,\n\t) => string;\n\n\t/**\n\t * Translate a string with placeholders for a fixed locale.\n\t * The placeholders should be\n\t * wrapped into curly braces and must match the regular expression\n\t * \"[_a-zA-Z][_a-zA-Z0-9]*\".\n\t *\n\t * @param locale - the locale identifier\n\t * @param msgid - the msgid to translate\n\t * @param placeholders - an optional dictionary of placeholders\n\t *\n\t * @returns the translated string with placeholders expanded\n\t */\n\t_lx: (locale: string, msgid: string, placeholders?: Placeholders) => string;\n\n\t/**\n\t * Translate a string with a plural expression with placeholders into a\n\t * fixed locale.\n\t *\n\t * @param locale - the locale identifier\n\t * @param msgid - the string in the singular\n\t * @param msgidPlural - the string in the plural\n\t * @param numItems - the number of items\n\t * @param placeholders - an optional dictionary of placeholders\n\t *\n\t * @returns the translated string\n\t */\n\t_lnx: (\n\t\tlocale: string,\n\t\tmsgid: string,\n\t\tmsgidPlural: string,\n\t\tnumItems: number,\n\t\tplaceholders?: Placeholders,\n\t) => string;\n\n\t/**\n\t * The method `_lpx()` combines `_lp()` with `_lx()`.\n\t *\n\t * @param locale - the locale identifier\n\t * @param msgctxt - the message context\n\t * @param msgid - the message id\n\t * @param placeholders - an optional dictionary with placehoders\n\t * @returns the translated string\n\t */\n\t_lpx: (msgctxt: string, msgid: string, placeholders?: Placeholders) => string;\n\n\t/**\n\t * The method `_lnpx()` brings it all together. It combines `_ln()` and\n\t * `_lp()` and `_lx()`.\n\t *\n\t * @param locale - the locale identifier\n\t * @param msgctxt - the message context\n\t * @param msgid - the message id\n\t * @param msgidPlural - the plural string\n\t * @param numItems - the number of items\n\t * @param placeholders - an optional dictionary with placehoders\n\t * @returns the translated string\n\t */\n\t_lnpx: (\n\t\tlocale: string,\n\t\tmsgctxt: string,\n\t\tmsgid: string,\n\t\tmsgidPlural: string,\n\t\tnumItems: number,\n\t\tplaceholders?: Placeholders,\n\t) => string;\n\n\tprivate static expand(\n\t\tmsg: string,\n\t\tplaceholders: { [key: string]: string },\n\t): string {\n\t\treturn msg.replace(/\\{([a-zA-Z][0-9a-zA-Z]*)\\}/g, (_, match: string) => {\n\t\t\tif (Object.prototype.hasOwnProperty.call(placeholders, match)) {\n\t\t\t\treturn placeholders[match];\n\t\t\t} else {\n\t\t\t\treturn `{${match}}`;\n\t\t\t}\n\t\t});\n\t}\n\n\tstatic getInstance(textdomain: string): Textdomain {\n\t\tif (\n\t\t\ttypeof textdomain === 'undefined' ||\n\t\t\ttextdomain === null ||\n\t\t\ttextdomain === ''\n\t\t) {\n\t\t\tthrow new Error('Cannot instantiate TextDomain without a textdomain');\n\t\t}\n\n\t\tif (Object.prototype.hasOwnProperty.call(Textdomain.domains, textdomain)) {\n\t\t\treturn Textdomain.domains[textdomain];\n\t\t} else {\n\t\t\tconst domain = new Textdomain();\n\t\t\tdomain.domain = textdomain;\n\t\t\tTextdomain.domains[textdomain] = domain;\n\t\t\tdomain.catalog = {\n\t\t\t\tmajor: 0,\n\t\t\t\tminor: 0,\n\t\t\t\tpluralFunction: germanicPlural,\n\t\t\t\tentries: {},\n\t\t\t};\n\n\t\t\t/* We generate most of the methods dynamically. This is really\n\t\t\t * ugly but it reduces the size of the bundle significantly.\n\t\t\t */\n\t\t\tif (typeof Textdomain.prototype['_'] !== 'function') {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t\t\t\tconst g = gettextImpl;\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/unbound-method\n\t\t\t\tconst x = Textdomain.expand;\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/unbound-method\n\t\t\t\tconst lk = CatalogCache.lookup;\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/unbound-method\n\t\t\t\tconst gc = this.getCatalog;\n\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t\t\t\tconst e = {\n\t\t\t\t\tmajor: 0,\n\t\t\t\t\tminor: 0,\n\t\t\t\t\tpluralFunction: germanicPlural,\n\t\t\t\t\tentries: {},\n\t\t\t\t};\n\n\t\t\t\t// Arguments in standardized order.\n\t\t\t\tconst argNames = ['msgctxt', 'msgid', 'msgidPlural', 'numItems'];\n\n\t\t\t\t// Method signatures (range of arguments to pick.)\n\t\t\t\tconst methodArgs: { [key: string]: Array<number> } = {\n\t\t\t\t\t'': [1, 2],\n\t\t\t\t\tn: [1, 4],\n\t\t\t\t\tp: [0, 2],\n\t\t\t\t\tnp: [0, 4],\n\t\t\t\t};\n\n\t\t\t\tconst tp = 'Textdomain.prototype._';\n\t\t\t\tconst f = 'function';\n\t\t\t\tconst c = 'catalog:this.catalog';\n\t\t\t\tconst tc = 'const catalog=Textdomain.getCatalog(l,this.textdomain());';\n\t\t\t\tconst cc = 'catalog:catalog';\n\t\t\t\tconst rg = 'return g';\n\t\t\t\tconst rx = 'return x';\n\t\t\t\tfor (const m in methodArgs) {\n\t\t\t\t\tif ({}.hasOwnProperty.call(methodArgs, m)) {\n\t\t\t\t\t\tconst range = methodArgs[m];\n\t\t\t\t\t\tconst slice = argNames.slice(range[0], range[1]);\n\t\t\t\t\t\tconst a = slice.join(',');\n\t\t\t\t\t\tconst k = slice.map(a => `${a}:${a}`).join(',');\n\t\t\t\t\t\t// FIXME! expand arguments msgid => msgid: msgid! But\n\t\t\t\t\t\t// shorten the actual arguments to single letters.\n\n\t\t\t\t\t\t// eslint-disable-next-line no-eval\n\t\t\t\t\t\teval(`\n${tp}${m}=${f}(${a}){${rg}({${k},${c}});};\n${tp}l${m}=${f}(l,${a}){${tc}${rg}({${k},${cc}});};\n${tp}${m}x=${f}(${a},p){${rx}(g({${k},${c}}),p||{});};\n${tp}l${m}x=${f}(l,${a},p){${tc}${rx}(g({${k},${cc}}),p||{});};\n`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn domain;\n\t\t}\n\t}\n\n\t/**\n\t * Delete all existing singletons. This method should usually be called\n\t * only, when you want to free memory.\n\t */\n\tstatic clearInstances(): void {\n\t\tTextdomain.boundDomains = {};\n\t}\n\n\t/**\n\t * This method is used for testing. Do not use it yourself!\n\t */\n\tstatic forgetInstances(): void {\n\t\tTextdomain.clearInstances();\n\t\tTextdomain.domains = {};\n\t}\n\n\t/**\n\t * Query the locale in use.\n\t */\n\tstatic get locale(): string {\n\t\treturn Textdomain._locale;\n\t}\n\n\t/**\n\t * Change the locale.\n\t *\n\t * For the web you can use all valid language identifier tags that\n\t * [BCP47](https://tools.ietf.org/html/bcp47) allows\n\t * (and actually a lot more). The tag is always used unmodified.\n\t *\n\t * For server environments, the locale identifier has to match the following\n\t * scheme:\n\t *\n\t * `ll_CC.charset\\@modifier`\n\t *\n\t * * `ll` is the two- or three-letter language code.\n\t * * `CC` is the optional two-letter country code.\n\t * * `charset` is an optional character set (letters, digits, and the hyphen).\n\t * * `modifier` is an optional variant (letters and digits).\n\t *\n\t * The language code is always converted to lowercase, the country code is\n\t * converted to uppercase, variant and charset are used as is.\n\t *\n\t * @param locale - the locale identifier\n\t * @returns the locale in use\n\t */\n\tstatic set locale(locale: string) {\n\t\tconst ucLocale = locale.toUpperCase();\n\n\t\tif (ucLocale === 'POSIX' || ucLocale === 'C') {\n\t\t\tthis._locale = 'POSIX';\n\t\t\treturn;\n\t\t}\n\n\t\tconst split = splitLocale(locale);\n\t\tif (!split) {\n\t\t\tthrow new Error('invalid locale identifier');\n\t\t}\n\n\t\t// The check from splitLocale() is sufficient.\n\t\tif (browserEnvironment()) {\n\t\t\tthis._locale = locale;\n\t\t\treturn;\n\t\t}\n\n\t\t// Node.\n\t\tsplit.tags[0] = split.tags[0].toLowerCase();\n\t\tif (split.tags.length > 1) {\n\t\t\tsplit.tags[1] = split.tags[1].toUpperCase();\n\t\t}\n\n\t\tconst separator = split.underscoreSeparator ? '_' : '-';\n\t\tthis._locale = split.tags.join(separator);\n\n\t\tif (typeof split.charset !== 'undefined') {\n\t\t\tthis._locale += '.' + split.charset;\n\t\t}\n\n\t\tif (typeof split.modifier !== 'undefined') {\n\t\t\tthis._locale += '@' + split.modifier;\n\t\t}\n\t}\n\n\t/**\n\t * A textdomain is an identifier for your application or library. It is\n\t * the basename of your translation files which are either TEXTDOMAIN.json\n\t * or TEXTDOMAIN.mo, depending on the format you have chosen.\n\t *\n\t * FIXME! This should be a getter!\n\t *\n\t * @returns the textdomain\n\t */\n\tpublic textdomain(): string {\n\t\treturn this.domain;\n\t}\n\n\t/**\n\t * Bind a textdomain to a certain path or queries the path that a\n\t * textdomain is bound to. The catalog file will be searched\n\t * in `${path}/locale/LC_MESSAGES/${domainname}.EXT`.\n\t *\n\t * Alternatively, you can pass a [[`LocaleContainer`]] that holds the\n\t * catalogs in memory.\n\t *\n\t * @param path - the base path or [[`LocaleContainer`]] for this textdomain\n\t */\n\tbindtextdomain(path?: string | LocaleContainer): string | LocaleContainer {\n\t\tif (typeof path !== 'undefined') {\n\t\t\tTextdomain.boundDomains[this.domain] = path;\n\t\t}\n\n\t\treturn Textdomain.boundDomains[this.domain];\n\t}\n\n\t/**\n\t * Resolve a textdomain, i.e. load the LocaleContainer for this domain and all\n\t * of its dependencies for the currently selected locale or the locale\n\t * specified.\n\t *\n\t * The promise will always resolve. If no catalog was found, an empty\n\t * catalog will be returned that is still usable.\n\t *\n\t * @param locale - an optional locale identifier, defaults to Textdomain.locale\n\t *\n\t * @returns a promise for a Catalog that will always resolve.\n\t */\n\tasync resolve(locale?: string): Promise<Catalog> {\n\t\tconst promises = [this.resolve1(locale)];\n\t\tfor (const td in Textdomain.domains) {\n\t\t\tif (\n\t\t\t\tObject.prototype.hasOwnProperty.call(Textdomain.domains, td) &&\n\t\t\t\tTextdomain.domains[td] !== this\n\t\t\t) {\n\t\t\t\tpromises.push(Textdomain.domains[td].resolve1(locale));\n\t\t\t}\n\t\t}\n\n\t\treturn Promise.all(promises).then(values => {\n\t\t\treturn new Promise(resolve => resolve(values[0]));\n\t\t});\n\t}\n\n\tprivate async resolve1(locale?: string): Promise<Catalog> {\n\t\tlet path = this.bindtextdomain();\n\n\t\tif (typeof path === 'undefined' || path === null) {\n\t\t\tconst parts = browserEnvironment()\n\t\t\t\t? ['', 'assets', 'locale']\n\t\t\t\t: ['src', 'assets', 'locale'];\n\t\t\tpath = parts.join(pathSeparator());\n\t\t}\n\n\t\tconst resolvedLocale = locale ? locale : Textdomain.locale;\n\t\treturn resolveImpl(\n\t\t\tthis.domain,\n\t\t\tpath,\n\t\t\tthis.catalogFormat,\n\t\t\tresolvedLocale,\n\t\t).then(catalog => {\n\t\t\tif (!locale) {\n\t\t\t\tthis.catalog = catalog;\n\t\t\t}\n\t\t\treturn new Promise(resolve => resolve(catalog));\n\t\t});\n\t}\n\n\t/**\n\t * Get the catalog format in use.\n\t *\n\t * @returns one of 'json' or 'mo' (default is 'json')\n\t */\n\tget catalogFormat(): string {\n\t\treturn this._catalogFormat;\n\t}\n\n\t/**\n\t * Set the catalog format to use.\n\t *\n\t * @param format - one of 'json' or 'mo'\n\t */\n\tset catalogFormat(format: string) {\n\t\tformat = format.toLowerCase();\n\t\tif (format === 'json') {\n\t\t\tthis._catalogFormat = 'json';\n\t\t} else if (format === 'mo') {\n\t\t\tthis._catalogFormat = 'mo';\n\t\t} else {\n\t\t\tthrow new Error(`unsupported format ${format}`);\n\t\t}\n\t}\n\n\t/**\n\t * Queries the user's preferred locales. On the server it queries the\n\t * environment variables `LANGUAGE`, `LC_ALL`, `LANG`, and `LC_MESSAGES`\n\t * (in that order). In the browser, it parses it checks the user preferences\n\t * in the variables `navigator.languages`, `navigator.language`,\n\t * `navigator.userLanguage`, `navigator.browserLanguage`, and\n\t * `navigator.systemLanguage`.\n\t *\n\t * @returns the set of locales in order of preference\n\t *\n\t * Added in \\@runtime 0.1.0.\n\t */\n\tstatic userLocales(): Array<string> {\n\t\treturn userLocales();\n\t}\n\n\t/**\n\t * Select one of the supported locales from a list of locales accepted by\n\t * the user.\n\t *\n\t * @param supported - the list of locales supported by the application\n\t * @param requested - the list of locales accepted by the user\n\t *\n\t * If called with just one argument, then the list of requested locales\n\t * is determined by calling [[Textdomain.userLocales]].\n\t *\n\t * @returns the negotiated locale or 'C' if not possible.\n\t */\n\tstatic selectLocale(\n\t\tsupported: Array<string>,\n\t\trequested?: Array<string>,\n\t): string {\n\t\treturn selectLocale(\n\t\t\tsupported,\n\t\t\trequested ?? Textdomain.userLocales(),\n\t\t);\n\t}\n\n\t/**\n\t * A no-op method for string marking.\n\t *\n\t * Sometimes you want to mark strings for translation but do not actually\n\t * want to translate them, at least not at the time of their definition.\n\t * This is often the case, when you have to preserve the original string.\n\t *\n\t * Take this example:\n\t *\n\t * ```\n\t * orangeColors = [gtx.N_('coral'), gtx.N_('tomato'), gtx.N_('orangered'),\n\t * gtx.N_('gold'), gtx.N_('orange'), gtx.N_('darkorange')]\n\t * ```\n\t *\n\t * These are standard CSS colors, and you cannot translate them inside\n\t * CSS styles. But for presentation you may want to translate them later:\n\t *\n\t * ```\n\t * console.log(gtx._x(\"The css color '{color}' is {translated}.\",\n\t * {\n\t * color: orangeColors[2],\n\t * translated: gtx._(orangeColors[2]),\n\t * }\n\t * )\n\t * );\n\t * ```\n\t *\n\t * In other words: The method just marks strings for translation, so that\n\t * the extractor `esgettext-xgettext` finds them but it does not actually\n\t * translate anything.\n\t *\n\t * Similar methods are available for other cases (with placeholder\n\t * expansion, context, or both). They are *not* available for plural\n\t * methods because that would not make sense.\n\t *\n\t * Note that all of these methods are also available as instance methods.\n\t *\n\t * @param msgid - the message id\n\t * @returns the original string\n\t */\n\tstatic N_(msgid: string): string {\n\t\treturn msgid;\n\t}\n\n\t/**\n\t * Does the same as the static method `N_()`.\n\t *\n\t * @param msgid - the message id\n\t * @returns the original string\n\t */\n\tN_(msgid: string): string {\n\t\treturn msgid;\n\t}\n\n\t/**\n\t * Same as `N_()` but with placeholder expansion.\n\t *\n\t * @param msgid - the message id\n\t * @param placeholders - a dictionary of placeholders\n\t * @returns the original string with placeholders expanded\n\t */\n\tN_x(msgid: string, placeholders?: Placeholders): string {\n\t\treturn Textdomain.expand(msgid, placeholders ?? {});\n\t}\n\n\t/**\n\t * Does the same as the static method `N_x()`.\n\t *\n\t * @param msgid - the message id\n\t * @param placeholders - a dictionary of placeholders\n\t * @returns the original string with placeholders expanded\n\t */\n\tstatic N_x(msgid: string, placeholders?: Placeholders): string {\n\t\treturn Textdomain.expand(msgid, placeholders ?? {});\n\t}\n\n\t/**\n\t * Same as `N_()` but with context.\n\t *\n\t * @param _msgctxt - the message context (not used)\n\t * @param msgid - the message id\n\t * @returns the original string\n\t */\n\tN_p(_msgctxt: string, msgid: string): string {\n\t\treturn msgid;\n\t}\n\n\t/**\n\t * Does the same as the static method `N_p()`.\n\t *\n\t * @param _msgctxt - the message context (not used)\n\t * @param msgid - the message id\n\t * @returns the original string with placeholders expanded\n\t */\n\tstatic N_p(_msgctxt: string, msgid: string): string {\n\t\treturn msgid;\n\t}\n\n\t/**\n\t * Same as `N_()` but with context and placeholder expansion.\n\t *\n\t * @param _msgctxt - the message context (not used)\n\t * @param msgid - the message id\n\t * @param placeholders - a dictionary of placeholders\n\t * @returns the original string with placeholders expanded\n\t */\n\tN_px(_msgctxt: string, msgid: string, placeholders?: Placeholders): string {\n\t\treturn Textdomain.expand(msgid, placeholders ?? {});\n\t}\n\n\t/**\n\t * Does the same as the static method `N_px()`.\n\t *\n\t * @param _msgctxt - the message context (not used)\n\t * @param msgid - the message id\n\t * @param placeholders - a dictionary of placeholders\n\t * @returns the original string with placeholders expanded\n\t */\n\tstatic N_px(\n\t\t_msgctxt: string,\n\t\tmsgid: string,\n\t\tplaceholders?: Placeholders,\n\t): string {\n\t\treturn Textdomain.expand(msgid, placeholders ?? {});\n\t}\n}\n","let userLocalesSelected = ['C'];\n\n/*\n * Force an execution environment. By default, the environment (NodeJS or\n * browser) is auto-detected. You can force the library to assume a certain\n * environment with this function.\n *\n * @param browser - whether to assume a browser or not\n * @returns the new setting.\n */\nexport function userLocales(locales?: Array<string>): Array<string> {\n\tif (typeof locales !== 'undefined') {\n\t\tuserLocalesSelected = locales;\n\t}\n\n\treturn userLocalesSelected;\n}\n","import { browserEnvironment } from './core/browser-environment';\nbrowserEnvironment(true);\n\nimport { pathSeparator } from './core/path-separator';\npathSeparator('/');\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { userLocales } from './core/user-locales';\nconst locales = new Array<string>();\nif (window.navigator.languages) {\n\tlocales.push(...window.navigator.languages);\n}\nif (typeof window.navigator.language !== 'undefined') {\n\tlocales.push(window.navigator.language);\n}\nconst nav: { [key: string]: string } = window.navigator as unknown as { [key: string]: string };\n\nif (Object.prototype.hasOwnProperty.call(nav, 'userLanguage') && nav.userLanguage) {\n\tlocales.push(nav.userLanguage);\n}\nif (Object.prototype.hasOwnProperty.call(nav, 'browserLanguage') && nav['browserLanguage']) {\n\tlocales.push(nav.browserLanguage);\n}\nif (Object.prototype.hasOwnProperty.call(nav, 'systemLanguage') && nav['systemLanguage']) {\n\tlocales.push(nav.systemLanguage);\n}\nuserLocales(locales);\n\nexport * from './core';\nexport { parseMoCatalog } from './parser';\n","export * from './parse-mo-catalog';\nexport * from './parse-json-catalog';\n","import { Catalog } from '../core/catalog';\n\nexport function validateJsonCatalog(udata: unknown): Catalog {\n\t// We could use ajv but it results in almost 300 k minimized code\n\t// for the browser bundle. This validator instead is absolutely\n\t// minimalistic, and only avoids exceptions that can occur, when\n\t// accessing entries.\n\n\tif (udata === null || typeof udata === 'undefined') {\n\t\tthrow new Error('catalog is either null or undefined');\n\t}\n\n\tconst data = udata as Catalog;\n\tif (data.constructor !== Object) {\n\t\tthrow new Error('catalog must be a dictionary');\n\t}\n\n\t// We don't care about major and minor because they are actually not\n\t// used.\n\n\tif (!Object.prototype.hasOwnProperty.call(data, 'entries')) {\n\t\tthrow new Error('catalog.entries does not exist');\n\t}\n\n\tconst entries = data.entries;\n\tif (entries === null || typeof entries === 'undefined') {\n\t\tthrow new Error('catalog.entries are not defined or null');\n\t}\n\n\tif (entries.constructor !== Object) {\n\t\tthrow new Error('catalog.entries must be a dictionary');\n\t}\n\n\tfor (const [key, value] of Object.entries(entries)) {\n\t\tif (!Array.isArray(value)) {\n\t\t\tthrow new Error(`catalog entry for key '${key}' is not an array`);\n\t\t}\n\t}\n\n\treturn data;\n}\n\nexport function parseJsonCatalog(json: ArrayBuffer): Catalog {\n\tconst text = new TextDecoder().decode(json);\n\tconst data = JSON.parse(text) as unknown;\n\n\treturn validateJsonCatalog(data);\n}\n","import { Catalog } from '../core/catalog';\nimport { germanicPlural } from '../core/germanic-plural';\nimport { DataViewlet } from '../core/data-viewlet';\n\n/* eslint-disable @typescript-eslint/no-explicit-any, no-control-regex, no-bitwise */\n\ninterface POHeader {\n\t[key: string]: string;\n}\n\n/*\n * Parse an MO file.\n *\n * An exception is thrown for invalid data.\n *\n * @param raw - The input as either a binary `String`, any `Array`-like byte\n * storage (`Array`, `Uint8Array`, `Arguments`, `jQuery(Array)`, ...)\n * @returns a Catalog\n */\nexport function parseMoCatalog(raw: ArrayBuffer): Catalog {\n\tconst catalog: Catalog = {\n\t\tmajor: 0,\n\t\tminor: 0,\n\t\tentries: {},\n\t\tpluralFunction: germanicPlural,\n\t};\n\tlet offset = 0;\n\n\tconst blob = new DataViewlet(new Uint8Array(raw), 'ascii');\n\n\tconst magic = blob.readUInt32LE(offset);\n\n\ttype Reader = (buf: DataViewlet, off: number) => number;\n\tlet reader: Reader;\n\tif (magic === 0x950412de) {\n\t\t/* eslint-disable-next-line @typescript-eslint/explicit-function-return-type */\n\t\treader = (buf, off) => buf.readUInt32LE(off);\n\t} else if (magic === 0xde120495) {\n\t\t/* eslint-disable-next-line @typescript-eslint/explicit-function-return-type */\n\t\treader = (buf, off) => buf.readUInt32BE(off);\n\t} else {\n\t\tthrow new Error(`invalid MO magic 0x${magic.toString(16)}`);\n\t}\n\n\toffset += 4;\n\n\t// The revision is encoded in two shorts, major and minor. We don't care\n\t// about the minor revision.\n\tconst major = reader(blob, offset) >> 16;\n\toffset += 4;\n\tif (major > 0) {\n\t\tthrow new Error(`unsupported major revision ${major}`);\n\t}\n\tconst numStrings = reader(blob, offset);\n\toffset += 4;\n\tconst msgidOffset = reader(blob, offset);\n\toffset += 4;\n\tconst msgstrOffset = reader(blob, offset);\n\n\toffset = msgidOffset;\n\tconst origTab = [];\n\tfor (let i = 0; i < numStrings; ++i) {\n\t\tconst l = reader(blob, offset);\n\t\toffset += 4;\n\t\tconst stringOffset = reader(blob, offset);\n\t\toffset += 4;\n\t\torigTab.push([l, stringOffset]);\n\t}\n\n\toffset = msgstrOffset;\n\tconst transTab = [];\n\tfor (let i = 0; i < numStrings; ++i) {\n\t\tconst l = reader(blob, offset);\n\t\toffset += 4;\n\t\tconst stringOffset = reader(blob, offset);\n\t\toffset += 4;\n\t\ttransTab.push([l, stringOffset]);\n\t}\n\n\tconst poHeader: POHeader = {};\n\tfor (let i = 0; i < numStrings; ++i) {\n\t\tconst orig = origTab[i];\n\t\tlet l = orig[0];\n\t\toffset = orig[1];\n\n\t\tconst msgid = blob.readString(offset, l).split('\\u0000')[0];\n\n\t\tconst trans = transTab[i];\n\t\tl = trans[0];\n\t\toffset = trans[1];\n\n\t\tconst msgstr = blob.readString(offset, l).split('\\u0000');\n\n\t\tlet pairs, kv;\n\t\tif (i === 0 && msgid === '') {\n\t\t\tpairs = msgstr[0].split('\\n');\n\t\t\tfor (let j = 0; j < pairs.length; ++j) {\n\t\t\t\tif (pairs[j] !== '') {\n\t\t\t\t\tkv = pairs[j].split(/[ \\t]*:[ \\t]*/);\n\t\t\t\t\tpoHeader[kv[0].toLowerCase()] = kv[1];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (poHeader['content-type'] !== undefined) {\n\t\t\t\tconst enc = poHeader['content-type'].replace(/.*=/, '');\n\t\t\t\tif (enc !== poHeader['content-type']) {\n\t\t\t\t\tblob.encoding = enc;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tcatalog.entries[msgid] = msgstr;\n\t}\n\n\treturn catalog;\n}\n","import { readFile } from 'fs';\nimport { Transport } from './transport.interface';\n\nexport class TransportFs implements Transport {\n\tloadFile(url: string): Promise<ArrayBuffer> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\treadFile(url, (err, data) => {\n\t\t\t\treturn err ? reject(err) : resolve(data);\n\t\t\t});\n\t\t});\n\t}\n}\n","import { Transport } from './transport.interface';\n\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n\nexport class TransportHttp implements Transport {\n\tloadFile(url: string): Promise<ArrayBuffer> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst xhr = new XMLHttpRequest();\n\t\t\txhr.responseType = 'arraybuffer';\n\t\t\txhr.open('GET', url, true);\n\t\t\txhr.onload = () => {\n\t\t\t\tif (xhr.readyState === 4 && xhr.status === 200) {\n\t\t\t\t\tresolve(xhr.response as ArrayBuffer);\n\t\t\t\t} else {\n\t\t\t\t\treject(new Error('get failed with status ' + xhr.status));\n\t\t\t\t}\n\t\t\t};\n\t\t\txhr.onerror = err => reject(err);\n\t\t\txhr.send();\n\t\t});\n\t}\n}\n","/* (ignored) */","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(\"./src/index-browser.ts\");\n",""],"names":[],"sourceRoot":""}
|
package/_bundles/runtime.min.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("esgettext",[],t):"object"==typeof exports?exports.esgettext=t():e.esgettext=t()}(self,(()=>(()=>{var __webpack_modules__={59:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.browserEnvironment=void 0;var r=!1;t.browserEnvironment=function(e){return void 0!==e&&(r=e),r}},259:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CatalogCache=void 0;var n=r(219),o=function(){function e(){}return e.getInstance=function(){return e.instance||(e.instance=new e),e.instance},e.clear=function(){e.cache={}},e.lookup=function(t,r){if(e.cache[t]){var n=e.cache[t];if(Object.prototype.hasOwnProperty.call(n,r))return n[r]}return null},e.store=function(t,r,o){Promise.resolve(o)!==o&&(o=(0,n.validateJsonCatalog)(o)),e.cache[t]||(e.cache[t]={}),e.cache[t][r]=o},e.cache={},e}();t.CatalogCache=o},276:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},352:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.DataViewlet=void 0;var r=function(){function e(e,t){void 0===t&&(t="utf-8"),this.array=e,this.decoder=new TextDecoder(t),this._encoding=t}return Object.defineProperty(e.prototype,"encoding",{get:function(){return this._encoding},set:function(e){this.decoder=new TextDecoder(e),this._encoding=e},enumerable:!1,configurable:!0}),e.prototype.readUInt32BE=function(e){if(void 0===e&&(e=0),e+4>this.array.byteLength+this.array.byteOffset)throw new Error("read past array end");return(this.array[e]<<24>>>0|this.array[e+1]<<16|this.array[e+2]<<8|this.array[e+3])>>>0},e.prototype.readUInt32LE=function(e){if(void 0===e&&(e=0),e+4>this.array.byteLength+this.array.byteOffset)throw new Error("read past array end");return(this.array[e+3]<<24>>>0|this.array[e+2]<<16|this.array[e+1]<<8|this.array[e])>>>0},e.prototype.readString=function(e,t){if(void 0===e&&(e=0),e+t>this.array.byteLength+this.array.byteOffset)throw new Error("read past array end");return void 0===t&&(t=this.array.byteLength-e),this.decoder.decode(this.array.slice(e,e+t))},e}();t.DataViewlet=r},285:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.explodeLocale=void 0,t.explodeLocale=function(e,t){var r=[],n=e.underscoreSeparator?"_":"-",o=t?0:e.tags.length-1,a=void 0!==e.charset,i=void 0!==e.modifier,c=a?[e.charset]:[""];if(t&&a){var u=e.charset,s=u.toUpperCase();s!==u&&c.push(s),c.push("")}for(var l=function(){var t=e.tags.slice(0,o+1).join(n),a=new Array;c.forEach((function(r){var n=r.length?t+"."+r:t;i&&(n+="@"+e.modifier),a.push(n)})),r.push(a)};o<e.tags.length;++o)l();return r}},680:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.germanicPlural=void 0,t.germanicPlural=function(e){return 1===e?0:1}},595:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.gettextImpl=void 0;var n=r(680);t.gettextImpl=function(e){var t,r=void 0===e.msgctxt?e.msgid:e.msgctxt+""+e.msgid,o=e.catalog.entries[r],a=null!==(t=e.numItems)&&void 0!==t?t:1;if(o&&o.length){if(void 0===e.msgidPlural)return o[0];var i=e.catalog.pluralFunction(a);if(i>=o.length){if(1===o.length)return o[0];i=(0,n.germanicPlural)(a)}return o[i]}return void 0!==e.msgidPlural&&1===e.catalog.pluralFunction(a)?e.msgidPlural:e.msgid}},299:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(276),t),o(r(960),t),o(r(259),t),o(r(507),t)},507:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},542:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.pathSeparator=void 0;var r="/";t.pathSeparator=function(e){return void 0!==e&&(r=e),r}},378:function(e,t,r){"use strict";var n=this&&this.__assign||function(){return n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e},n.apply(this,arguments)},o=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,a){function i(e){try{u(n.next(e))}catch(e){a(e)}}function c(e){try{u(n.throw(e))}catch(e){a(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,c)}u((n=n.apply(e,t||[])).next())}))},a=this&&this.__generator||function(e,t){var r,n,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function c(c){return function(u){return function(c){if(r)throw new TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(i=0)),i;)try{if(r=1,n&&(o=2&c[0]?n.return:c[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,c[1])).done)return o;switch(n=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,n=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=t.call(e,i)}catch(e){c=[6,e],n=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,u])}}};Object.defineProperty(t,"__esModule",{value:!0}),t.resolveImpl=void 0;var i=r(129),c=r(154),u=r(219),s=r(59),l=r(970),p=r(680),f=r(259),d=r(285);function _(e,t,r){for(var n,o=0;o<e.length;++o){var a=e[0];Object.prototype.hasOwnProperty.call(t,a)&&(Object.prototype.hasOwnProperty.call(t[a],"LC_MESSAGES")&&Object.prototype.hasOwnProperty.call(t[a].LC_MESSAGES,r)&&(n=t[a].LC_MESSAGES[r]))}return new Promise((function(e,t){n?e(n):t()}))}function h(e,t,r,n){return o(this,void 0,void 0,(function(){return a(this,(function(o){return"object"==typeof t&&null!==t?[2,_(e,t,r)]:[2,new Promise((function(o,a){var l=new Array;e.forEach((function(e){l.push((function(){return function(e,t){var r,n,o;try{var a=new URL(e);if("https:"!==a.protocol&&"http:"!==a.protocol&&"file:"!==a.protocol)throw new Error("unsupported scheme ".concat(a.protocol));r="http"}catch(e){r=(0,s.browserEnvironment)()?"http":"fs"}return n="http"===r?new i.TransportHttp:new c.TransportFs,o="json"===t?u.parseJsonCatalog:u.parseMoCatalog,new Promise((function(t,r){n.loadFile(e).then((function(e){t(o(e))})).catch((function(e){return r(e)}))}))}(function(e,t,r,n){return"".concat(e,"/").concat(t,"/LC_MESSAGES/").concat(r,".").concat(n)}(t,e,r,n),n)}))})),l.reduce((function(e,t){return e.catch(t)}),Promise.reject()).then((function(e){return o(e)})).catch((function(e){return a(e)}))}))]}))}))}function m(e){return Object.prototype.hasOwnProperty.call(e.entries,"")?(e.entries[""][0].split("\n").forEach((function(t){var r=t.split(":");if("plural-forms"===r.shift().toLowerCase()){var n=r.join(":");e.pluralFunction=function(e){for(var t=e.replace(/[ \t\r\013\014]/g,"").replace(/;$/,"").split(/[<>!=]=|&&|\|\||[-!*/%+<>=?:;]/),r=0;r<t.length;++r){var n=t[r].replace(/^\(+/,"").replace(/\)+$/,"");if("nplurals"!==n&&"plural"!==n&&"n"!==n&&null===/^[0-9]+$/.exec(n))throw new Error("invalid plural function")}return new Function("n","var nplurals = 1, plural = 0;"+e+"; return 0 + plural")}(n)}})),e):e}t.resolveImpl=function(e,t,r,i){var c={major:0,minor:0,pluralFunction:p.germanicPlural,entries:{}};return new Promise("C"===i||"POSIX"===i?function(e){return e(c)}:function(u){(function(e,t,r,i,c){return o(this,void 0,void 0,(function(){var o,u,s,l,d;return a(this,(function(a){switch(a.label){case 0:return o={},u={major:0,minor:0,pluralFunction:p.germanicPlural,entries:o},null!==(s=f.CatalogCache.lookup(t,i))?Promise.resolve(s)===s?[2,s]:[2,new Promise((function(e){return e(s)}))]:(l=new Array,d=new Array,e.forEach((function(e,t){var n=h(e,r,i,c).then((function(e){return d[t]=e})).catch((function(){}));l.push(n)})),[4,Promise.all(l)]);case 1:return a.sent(),d.forEach((function(e){u.major=e.major,u.minor=e.minor,u.entries=n(n({},u.entries),e.entries)})),[2,new Promise((function(e){e(u)}))]}}))}))})((0,d.explodeLocale)((0,l.splitLocale)(i),!0),i,t,e,r).then((function(t){m(t),f.CatalogCache.store(i,e,t),u(t)})).catch((function(){f.CatalogCache.store(i,e,c),u(c)}))})}},74:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.selectLocale=void 0;var n=r(970);function o(e,t){if(e.length!==t.length)return!1;for(var r=0;r<e.length;++r)if(e[r].toLowerCase()!==t[r].toLowerCase())return!1;return!0}t.selectLocale=function(e,t){for(var r="",a=0;a<t.length;++a){var i=(0,n.splitLocale)(t[a]);if(i)for(var c=0;c<e.length;++c){var u=(0,n.splitLocale)(e[c]);if(u){if(o(i.tags,u.tags))return e[c];r.length||i.tags[0].toLowerCase()!==u.tags[0].toLowerCase()||(r=e[c])}}}return r.length?r:"C"}},970:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.splitLocale=void 0;var r=new RegExp("^[a-z0-9]+(?:-[a-z0-9]+)*$","i"),n=new RegExp("^[a-z0-9]+(?:_[a-z0-9]+)*$","i");t.splitLocale=function(e){var t="",o="",a=e.includes("_");if(e=(e=e.replace(/@([a-z]+)$/i,(function(e,t){return o=t,""}))).replace(/\.([-0-9a-z]+)$/i,(function(e,r){return t=r,""})),a){if(!n.exec(e))return null}else if(!r.exec(e))return null;var i=a?"_":"-",c={tags:e.split(i),underscoreSeparator:a};return t.length&&(c.charset=t),o.length&&(c.modifier=o),c}},960:function(__unused_webpack_module,exports,__webpack_require__){"use strict";var __awaiter=this&&this.__awaiter||function(e,t,r,n){return new(r||(r=Promise))((function(o,a){function i(e){try{u(n.next(e))}catch(e){a(e)}}function c(e){try{u(n.throw(e))}catch(e){a(e)}}function u(e){var t;e.done?o(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(i,c)}u((n=n.apply(e,t||[])).next())}))},__generator=this&&this.__generator||function(e,t){var r,n,o,a,i={label:0,sent:function(){if(1&o[0])throw o[1];return o[1]},trys:[],ops:[]};return a={next:c(0),throw:c(1),return:c(2)},"function"==typeof Symbol&&(a[Symbol.iterator]=function(){return this}),a;function c(c){return function(u){return function(c){if(r)throw new TypeError("Generator is already executing.");for(;a&&(a=0,c[0]&&(i=0)),i;)try{if(r=1,n&&(o=2&c[0]?n.return:c[0]?n.throw||((o=n.return)&&o.call(n),0):n.next)&&!(o=o.call(n,c[1])).done)return o;switch(n=0,o&&(c=[2&c[0],o.value]),c[0]){case 0:case 1:o=c;break;case 4:return i.label++,{value:c[1],done:!1};case 5:i.label++,n=c[1],c=[0];continue;case 7:c=i.ops.pop(),i.trys.pop();continue;default:if(!(o=i.trys,(o=o.length>0&&o[o.length-1])||6!==c[0]&&2!==c[0])){i=0;continue}if(3===c[0]&&(!o||c[1]>o[0]&&c[1]<o[3])){i.label=c[1];break}if(6===c[0]&&i.label<o[1]){i.label=o[1],o=c;break}if(o&&i.label<o[2]){i.label=o[2],i.ops.push(c);break}o[2]&&i.ops.pop(),i.trys.pop();continue}c=t.call(e,i)}catch(e){c=[6,e],n=0}finally{r=o=0}if(5&c[0])throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}([c,u])}}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.Textdomain=void 0;var resolve_impl_1=__webpack_require__(378),catalog_cache_1=__webpack_require__(259),browser_environment_1=__webpack_require__(59),gettext_impl_1=__webpack_require__(595),germanic_plural_1=__webpack_require__(680),split_locale_1=__webpack_require__(970),path_separator_1=__webpack_require__(542),user_locales_1=__webpack_require__(398),select_locale_1=__webpack_require__(74),Textdomain=function(){function Textdomain(){this._catalogFormat="json"}return Textdomain.getCatalog=function(e,t){var r=catalog_cache_1.CatalogCache.lookup(e,t);return r&&Promise.resolve(r)!==r?r:{major:0,minor:0,pluralFunction:germanic_plural_1.germanicPlural,entries:{}}},Textdomain.expand=function(e,t){return e.replace(/\{([a-zA-Z][0-9a-zA-Z]*)\}/g,(function(e,r){return Object.prototype.hasOwnProperty.call(t,r)?t[r]:"{".concat(r,"}")}))},Textdomain.getInstance=function(textdomain){if(null==textdomain||""===textdomain)throw new Error("Cannot instantiate TextDomain without a textdomain");if(Object.prototype.hasOwnProperty.call(Textdomain.domains,textdomain))return Textdomain.domains[textdomain];var domain=new Textdomain;if(domain.domain=textdomain,Textdomain.domains[textdomain]=domain,domain.catalog={major:0,minor:0,pluralFunction:germanic_plural_1.germanicPlural,entries:{}},"function"!=typeof Textdomain.prototype._){var g=gettext_impl_1.gettextImpl,x=Textdomain.expand,lk=catalog_cache_1.CatalogCache.lookup,gc_1=this.getCatalog,e={major:0,minor:0,pluralFunction:germanic_plural_1.germanicPlural,entries:{}},argNames=["msgctxt","msgid","msgidPlural","numItems"],methodArgs={"":[1,2],n:[1,4],p:[0,2],np:[0,4]},tp="Textdomain.prototype._",f="function",c="catalog:this.catalog",tc="const catalog=Textdomain.getCatalog(l,this.textdomain());",cc="catalog:catalog",rg="return g",rx="return x";for(var m in methodArgs)if({}.hasOwnProperty.call(methodArgs,m)){var range=methodArgs[m],slice=argNames.slice(range[0],range[1]),a=slice.join(","),k=slice.map((function(e){return"".concat(e,":").concat(e)})).join(",");eval("\n".concat(tp).concat(m,"=").concat(f,"(").concat(a,"){").concat(rg,"({").concat(k,",").concat(c,"});};\n").concat(tp,"l").concat(m,"=").concat(f,"(l,").concat(a,"){").concat(tc).concat(rg,"({").concat(k,",").concat(cc,"});};\n").concat(tp).concat(m,"x=").concat(f,"(").concat(a,",p){").concat(rx,"(g({").concat(k,",").concat(c,"}),p||{});};\n").concat(tp,"l").concat(m,"x=").concat(f,"(l,").concat(a,",p){").concat(tc).concat(rx,"(g({").concat(k,",").concat(cc,"}),p||{});};\n"))}}return domain},Textdomain.clearInstances=function(){Textdomain.boundDomains={}},Textdomain.forgetInstances=function(){Textdomain.clearInstances(),Textdomain.domains={}},Object.defineProperty(Textdomain,"locale",{get:function(){return Textdomain._locale},set:function(e){var t=e.toUpperCase();if("POSIX"!==t&&"C"!==t){var r=(0,split_locale_1.splitLocale)(e);if(!r)throw new Error("invalid locale identifier");if((0,browser_environment_1.browserEnvironment)())this._locale=e;else{r.tags[0]=r.tags[0].toLowerCase(),r.tags.length>1&&(r.tags[1]=r.tags[1].toUpperCase());var n=r.underscoreSeparator?"_":"-";this._locale=r.tags.join(n),void 0!==r.charset&&(this._locale+="."+r.charset),void 0!==r.modifier&&(this._locale+="@"+r.modifier)}}else this._locale="POSIX"},enumerable:!1,configurable:!0}),Textdomain.prototype.textdomain=function(){return this.domain},Textdomain.prototype.bindtextdomain=function(e){return void 0!==e&&(Textdomain.boundDomains[this.domain]=e),Textdomain.boundDomains[this.domain]},Textdomain.prototype.resolve=function(e){return __awaiter(this,void 0,void 0,(function(){var t,r;return __generator(this,(function(n){for(r in t=[this.resolve1(e)],Textdomain.domains)Object.prototype.hasOwnProperty.call(Textdomain.domains,r)&&Textdomain.domains[r]!==this&&t.push(Textdomain.domains[r].resolve1(e));return[2,Promise.all(t).then((function(e){return new Promise((function(t){return t(e[0])}))}))]}))}))},Textdomain.prototype.resolve1=function(e){return __awaiter(this,void 0,void 0,(function(){var t,r,n,o=this;return __generator(this,(function(a){return null==(t=this.bindtextdomain())&&(r=(0,browser_environment_1.browserEnvironment)()?["","assets","locale"]:["src","assets","locale"],t=r.join((0,path_separator_1.pathSeparator)())),n=e||Textdomain.locale,[2,(0,resolve_impl_1.resolveImpl)(this.domain,t,this.catalogFormat,n).then((function(t){return e||(o.catalog=t),new Promise((function(e){return e(t)}))}))]}))}))},Object.defineProperty(Textdomain.prototype,"catalogFormat",{get:function(){return this._catalogFormat},set:function(e){if("json"===(e=e.toLowerCase()))this._catalogFormat="json";else{if("mo"!==e)throw new Error("unsupported format ".concat(e));this._catalogFormat="mo"}},enumerable:!1,configurable:!0}),Textdomain.userLocales=function(){return(0,user_locales_1.userLocales)()},Textdomain.selectLocale=function(e,t){return(0,select_locale_1.selectLocale)(e,null!=t?t:Textdomain.userLocales())},Textdomain.N_=function(e){return e},Textdomain.prototype.N_=function(e){return e},Textdomain.prototype.N_x=function(e,t){return Textdomain.expand(e,null!=t?t:{})},Textdomain.N_x=function(e,t){return Textdomain.expand(e,null!=t?t:{})},Textdomain.prototype.N_p=function(e,t){return t},Textdomain.N_p=function(e,t){return t},Textdomain.prototype.N_px=function(e,t,r){return Textdomain.expand(t,null!=r?r:{})},Textdomain.N_px=function(e,t,r){return Textdomain.expand(t,null!=r?r:{})},Textdomain.domains={},Textdomain.cache=catalog_cache_1.CatalogCache.getInstance(),Textdomain.boundDomains={},Textdomain._locale="C",Textdomain}();exports.Textdomain=Textdomain},398:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.userLocales=void 0;var r=["C"];t.userLocales=function(e){return void 0!==e&&(r=e),r}},474:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),t.parseMoCatalog=void 0,(0,r(59).browserEnvironment)(!0),(0,r(542).pathSeparator)("/");var a=r(398),i=new Array;window.navigator.languages&&i.push.apply(i,window.navigator.languages),void 0!==window.navigator.language&&i.push(window.navigator.language);var c=window.navigator;Object.prototype.hasOwnProperty.call(c,"userLanguage")&&c.userLanguage&&i.push(c.userLanguage),Object.prototype.hasOwnProperty.call(c,"browserLanguage")&&c.browserLanguage&&i.push(c.browserLanguage),Object.prototype.hasOwnProperty.call(c,"systemLanguage")&&c.systemLanguage&&i.push(c.systemLanguage),(0,a.userLocales)(i),o(r(299),t);var u=r(219);Object.defineProperty(t,"parseMoCatalog",{enumerable:!0,get:function(){return u.parseMoCatalog}})},219:function(e,t,r){"use strict";var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r);var o=Object.getOwnPropertyDescriptor(t,r);o&&!("get"in o?!t.__esModule:o.writable||o.configurable)||(o={enumerable:!0,get:function(){return t[r]}}),Object.defineProperty(e,n,o)}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__exportStar||function(e,t){for(var r in e)"default"===r||Object.prototype.hasOwnProperty.call(t,r)||n(t,e,r)};Object.defineProperty(t,"__esModule",{value:!0}),o(r(831),t),o(r(45),t)},45:(e,t)=>{"use strict";function r(e){if(null==e)throw new Error("catalog is either null or undefined");var t=e;if(t.constructor!==Object)throw new Error("catalog must be a dictionary");if(!Object.prototype.hasOwnProperty.call(t,"entries"))throw new Error("catalog.entries does not exist");var r=t.entries;if(null==r)throw new Error("catalog.entries are not defined or null");if(r.constructor!==Object)throw new Error("catalog.entries must be a dictionary");for(var n=0,o=Object.entries(r);n<o.length;n++){var a=o[n],i=a[0],c=a[1];if(!Array.isArray(c))throw new Error("catalog entry for key '".concat(i,"' is not an array"))}return t}Object.defineProperty(t,"__esModule",{value:!0}),t.parseJsonCatalog=t.validateJsonCatalog=void 0,t.validateJsonCatalog=r,t.parseJsonCatalog=function(e){var t=(new TextDecoder).decode(e);return r(JSON.parse(t))}},831:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parseMoCatalog=void 0;var n=r(680),o=r(352);t.parseMoCatalog=function(e){var t,r={major:0,minor:0,entries:{},pluralFunction:n.germanicPlural},a=0,i=new o.DataViewlet(new Uint8Array(e),"ascii"),c=i.readUInt32LE(a);if(2500072158===c)t=function(e,t){return e.readUInt32LE(t)};else{if(3725722773!==c)throw new Error("invalid MO magic 0x".concat(c.toString(16)));t=function(e,t){return e.readUInt32BE(t)}}var u=t(i,a+=4)>>16;if(a+=4,u>0)throw new Error("unsupported major revision ".concat(u));var s=t(i,a),l=t(i,a+=4),p=t(i,a+=4);a=l;for(var f=[],d=0;d<s;++d){var _=t(i,a),h=t(i,a+=4);a+=4,f.push([_,h])}a=p;var m=[];for(d=0;d<s;++d){_=t(i,a),h=t(i,a+=4);a+=4,m.push([_,h])}var g={};for(d=0;d<s;++d){var v=f[d];_=v[0];a=v[1];var w=i.readString(a,_).split("\0")[0],y=m[d];_=y[0],a=y[1];var b=i.readString(a,_).split("\0"),x=void 0,O=void 0;if(0===d&&""===w){x=b[0].split("\n");for(var P=0;P<x.length;++P)""!==x[P]&&(g[(O=x[P].split(/[ \t]*:[ \t]*/))[0].toLowerCase()]=O[1]);if(void 0!==g["content-type"]){var j=g["content-type"].replace(/.*=/,"");j!==g["content-type"]&&(i.encoding=j)}}r.entries[w]=b}return r}},154:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TransportFs=void 0;var n=r(421),o=function(){function e(){}return e.prototype.loadFile=function(e){return new Promise((function(t,r){(0,n.readFile)(e,(function(e,n){return e?r(e):t(n)}))}))},e}();t.TransportFs=o},129:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TransportHttp=void 0;var r=function(){function e(){}return e.prototype.loadFile=function(e){return new Promise((function(t,r){var n=new XMLHttpRequest;n.responseType="arraybuffer",n.open("GET",e,!0),n.onload=function(){4===n.readyState&&200===n.status?t(n.response):r(new Error("get failed with status "+n.status))},n.onerror=function(e){return r(e)},n.send()}))},e}();t.TransportHttp=r},421:()=>{}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e].call(r.exports,r,r.exports,__webpack_require__),r.exports}var __webpack_exports__=__webpack_require__(474);return __webpack_exports__})()));
|
|
2
|
-
//# sourceMappingURL=runtime.min.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.min.js","mappings":"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","sources":["webpack://esgettext/webpack/universalModuleDefinition","webpack://esgettext/./src/core/browser-environment.ts","webpack://esgettext/./src/core/catalog-cache.ts","webpack://esgettext/./src/core/data-viewlet.ts","webpack://esgettext/./src/core/explode-locale.ts","webpack://esgettext/./src/core/germanic-plural.ts","webpack://esgettext/./src/core/gettext-impl.ts","webpack://esgettext/./src/core/index.ts","webpack://esgettext/./src/core/path-separator.ts","webpack://esgettext/./src/core/resolve-impl.ts","webpack://esgettext/./src/core/select-locale.ts","webpack://esgettext/./src/core/split-locale.ts","webpack://esgettext/./src/core/textdomain.ts","webpack://esgettext/./src/core/user-locales.ts","webpack://esgettext/./src/index-browser.ts","webpack://esgettext/./src/parser/index.ts","webpack://esgettext/./src/parser/parse-json-catalog.ts","webpack://esgettext/./src/parser/parse-mo-catalog.ts","webpack://esgettext/./src/transport/fs.ts","webpack://esgettext/./src/transport/http.ts","webpack://esgettext/webpack/bootstrap","webpack://esgettext/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"esgettext\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"esgettext\"] = factory();\n\telse\n\t\troot[\"esgettext\"] = factory();\n})(self, () => {\nreturn ","let isBrowser = false;\n\n/*\n * Force an execution environment. By default, the environment (NodeJS or\n * browser) is auto-detected. You can force the library to assume a certain\n * environment with this function.\n *\n * @param browser - whether to assume a browser or not\n * @returns the new setting.\n */\nexport function browserEnvironment(browser?: boolean): boolean {\n\tif (typeof browser !== 'undefined') {\n\t\tisBrowser = browser;\n\t}\n\n\treturn isBrowser;\n}\n","import { validateJsonCatalog } from '../parser';\nimport { Catalog } from './catalog';\n\ninterface CatalogCacheInterface {\n\t// Locale Key.\n\t[key: string]: {\n\t\t// Textdomain.\n\t\t[key: string]: Catalog | Promise<Catalog> | null;\n\t};\n}\n\n/*\n * Caches catalog lookups by path, locale, and textdomain.\n *\n * Failed lookups are stored as null values.\n *\n * It is also possible to store a Promise. In that case, if a request is\n * made to bind the textdomain, the promise is settled. Note that this\n * mechanism is never used for message lookup but only for loading the\n * catalog via resolve.\n */\nexport class CatalogCache {\n\tprivate static instance: CatalogCache;\n\tprivate static cache: CatalogCacheInterface = {};\n\n\tprivate constructor() {\n\t\t/* Singleton. */\n\t}\n\n\tstatic getInstance(): CatalogCache {\n\t\tif (!CatalogCache.instance) {\n\t\t\tCatalogCache.instance = new CatalogCache();\n\t\t}\n\n\t\treturn CatalogCache.instance;\n\t}\n\n\tstatic clear(): void {\n\t\tCatalogCache.cache = {};\n\t}\n\n\t/**\n\t * Lookup a Catalog for a given base path, locale, and textdomain.\n\t *\n\t * The locale key is usually the locale identifier (e.g. de-DE or sr\\@latin).\n\t * But it can also be a colon separated list of such locale identifiers.\n\t *\n\t *\n\t * @param localeKey - the locale key\n\t * @param textdomain - the textdomain\n\t * @returns the cached Catalog, a Promise or null for failure\n\t */\n\tpublic static lookup(\n\t\tlocaleKey: string,\n\t\ttextdomain: string,\n\t): Catalog | Promise<Catalog> | null {\n\t\tif (CatalogCache.cache[localeKey]) {\n\t\t\tconst ptr = CatalogCache.cache[localeKey];\n\t\t\tif (Object.prototype.hasOwnProperty.call(ptr, textdomain)) {\n\t\t\t\treturn ptr[textdomain];\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tpublic static store(\n\t\tlocaleKey: string,\n\t\ttextdomain: string,\n\t\tentry: Catalog | Promise<Catalog>,\n\t): void {\n\t\tif (Promise.resolve(entry) !== entry) {\n\t\t\t// Object.\n\t\t\tentry = validateJsonCatalog(entry as Catalog);\n\t\t}\n\n\t\tif (!CatalogCache.cache[localeKey]) {\n\t\t\tCatalogCache.cache[localeKey] = {};\n\t\t}\n\t\tCatalogCache.cache[localeKey][textdomain] = entry;\n\t}\n}\n","/*\n * A minimalistic buffer implementation that can only read 32 bit unsigned\n * integers and strings.\n */\nexport class DataViewlet {\n\tprivate decoder: TextDecoder;\n\tprivate _encoding: string;\n\n\t/*\n\t * Create a DataViewlet instance. All encodings that are supported by\n\t * the runtime environments `TextDecoder` interface.\n\t *\n\t * @param array - a `Unit8Array` view on the binary buffer\n\t * @param encoding - encoding of strings, defaults to utf-8\n\t */\n\tconstructor(\n\t\tprivate readonly array: Uint8Array,\n\t\tencoding = 'utf-8',\n\t) {\n\t\tthis.decoder = new TextDecoder(encoding);\n\t\tthis._encoding = encoding;\n\t}\n\n\t/**\n\t * Get the encoding for strings.\n\t *\n\t * @returns the encoding in use\n\t */\n\tget encoding(): string {\n\t\treturn this._encoding;\n\t}\n\n\t/**\n\t * Switch to a new encoding.\n\t *\n\t * @param encoding - new encoding to use\n\t */\n\tset encoding(encoding: string) {\n\t\tthis.decoder = new TextDecoder(encoding);\n\t\tthis._encoding = encoding;\n\t}\n\t/*\n\t * Reads an unsigned 32-bit integer from the buffer at\n\t * the specified offset as big-endian.\n\t *\n\t * @param offset - Number of bytes to skip before starting to read.\n\t * Must satisfy `0 <= offset <= buf.length - 4`.\n\t * Default: 0.\n\t * @returns the 32-bit unsigned integer at position `offset`.s\n\t */\n\treadUInt32BE(offset = 0): number {\n\t\tif (offset + 4 > this.array.byteLength + this.array.byteOffset) {\n\t\t\tthrow new Error('read past array end');\n\t\t}\n\n\t\treturn (\n\t\t\t(((this.array[offset] << 24) >>> 0) |\n\t\t\t\t(this.array[offset + 1] << 16) |\n\t\t\t\t(this.array[offset + 2] << 8) |\n\t\t\t\tthis.array[offset + 3]) >>>\n\t\t\t0\n\t\t);\n\t}\n\n\t/*\n\t * Reads an unsigned 32-bit integer from the buffer at\n\t * the specified offset as little-endian.\n\t *\n\t * @param offset - Number of bytes to skip before starting to read.\n\t * Must satisfy `0 <= offset <= buf.length - 4`.\n\t * Default: 0.\n\t * @returns the 32-bit unsigned integer at position `offset`.s\n\t */\n\treadUInt32LE(offset = 0): number {\n\t\tif (offset + 4 > this.array.byteLength + this.array.byteOffset) {\n\t\t\tthrow new Error('read past array end');\n\t\t}\n\n\t\treturn (\n\t\t\t(((this.array[offset + 3] << 24) >>> 0) |\n\t\t\t\t(this.array[offset + 2] << 16) |\n\t\t\t\t(this.array[offset + 1] << 8) |\n\t\t\t\tthis.array[offset]) >>>\n\t\t\t0\n\t\t);\n\t}\n\n\t/*\n\t * Read a string at a specified offset.\n\t *\n\t * @param offset - to beginning of buffer in bytes\n\t * @param length - of the string to read in bytes or to the end of the\n\t * buffer if not specified.\n\t */\n\treadString(offset = 0, length?: number): string {\n\t\tif (offset + (length as number)> this.array.byteLength + this.array.byteOffset) {\n\t\t\tthrow new Error('read past array end');\n\t\t}\n\n\t\tif (typeof length === 'undefined') {\n\t\t\tlength = this.array.byteLength - offset;\n\t\t}\n\n\t\treturn this.decoder.decode(this.array.slice(offset, offset + length));\n\t}\n}\n","import { SplitLocale } from './split-locale';\n\nexport type ExplodedLocale = Array<Array<string>>;\n\nexport function explodeLocale(\n\tlocale: SplitLocale,\n\tvary?: boolean,\n): ExplodedLocale {\n\tconst retval: ExplodedLocale = [];\n\tconst lsep = locale.underscoreSeparator ? '_' : '-';\n\tlet i = vary ? 0 : locale.tags.length - 1;\n\tconst hasCharset = typeof locale.charset !== 'undefined';\n\tconst hasModifier = typeof locale.modifier !== 'undefined';\n\n\tconst charsets = hasCharset ? [locale.charset as string] : [''];\n\tif (vary && hasCharset) {\n\t\tconst charset = locale.charset as string;\n\t\tconst ucCharset = charset.toUpperCase();\n\t\tif (ucCharset !== charset) {\n\t\t\tcharsets.push(ucCharset);\n\t\t}\n\t\tcharsets.push('');\n\t}\n\n\tfor (; i < locale.tags.length; ++i) {\n\t\tconst lingua = locale.tags.slice(0, i + 1).join(lsep);\n\t\tconst ids = new Array<string>();\n\n\t\tcharsets.forEach(charset => {\n\t\t\tlet id = charset.length ? lingua + '.' + charset : lingua;\n\t\t\tif (hasModifier) {\n\t\t\t\tid += '@' + locale.modifier;\n\t\t\t}\n\t\t\tids.push(id);\n\t\t});\n\t\tretval.push(ids);\n\t}\n\n\treturn retval;\n}\n","/*\n * Function for germanic plural. Returns singular (0) for 1 item, and\n * 1 for everything else.\n *\n * @param numItems - number of items\n * @returns the index into the plural translations\n */\nexport function germanicPlural(numItems: number): number {\n\treturn numItems === 1 ? 0 : 1;\n}\n","import { Catalog } from './catalog';\nimport { germanicPlural } from './germanic-plural';\n\ninterface GettextImplArgs {\n\tmsgid: string;\n\tcatalog: Catalog;\n\tmsgidPlural?: string;\n\tnumItems?: number;\n\tmsgctxt?: string;\n}\n\nexport function gettextImpl(args: GettextImplArgs): string {\n\tconst key =\n\t\ttypeof args.msgctxt === 'undefined'\n\t\t\t? args.msgid\n\t\t\t: args.msgctxt + '\\u0004' + args.msgid;\n\tconst translations = args.catalog.entries[key];\n\tconst numItems = args.numItems ?? 1;\n\n\tif (translations && translations.length) {\n\t\tif (typeof args.msgidPlural === 'undefined') {\n\t\t\treturn translations[0];\n\t\t} else {\n\t\t\tlet pluralForm = args.catalog.pluralFunction(numItems);\n\t\t\tif (pluralForm >= translations.length) {\n\t\t\t\tif (translations.length === 1) {\n\t\t\t\t\treturn translations[0];\n\t\t\t\t} else {\n\t\t\t\t\tpluralForm = germanicPlural(numItems);\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn translations[pluralForm];\n\t\t}\n\t} else if (typeof args.msgidPlural !== 'undefined') {\n\t\tconst pluralform = args.catalog.pluralFunction(numItems);\n\t\tif (pluralform === 1) {\n\t\t\treturn args.msgidPlural;\n\t\t}\n\t}\n\n\treturn args.msgid;\n}\n","export * from './catalog';\nexport * from './textdomain';\nexport * from './catalog-cache';\nexport * from './locale-container';\n","let usePathSeparator = '/';\n\n/*\n * Get/set the path separator to use. This should only be imported from\n * the main entry point for the browser resp. node.\n */\nexport function pathSeparator(sep?: string): string {\n\tif (typeof sep !== 'undefined') {\n\t\tusePathSeparator = sep;\n\t}\n\n\treturn usePathSeparator;\n}\n","import { TransportHttp } from '../transport/http';\nimport { TransportFs } from '../transport/fs';\nimport { Transport } from '../transport/transport.interface';\nimport { parseJsonCatalog, parseMoCatalog } from '../parser';\nimport { browserEnvironment } from './browser-environment';\nimport { Catalog, CatalogEntries } from './catalog';\nimport { SplitLocale, splitLocale } from './split-locale';\nimport { germanicPlural } from './germanic-plural';\nimport { CatalogCache } from './catalog-cache';\nimport { explodeLocale, ExplodedLocale } from './explode-locale';\nimport { LocaleContainer } from './locale-container';\n\n/* eslint-disable no-console */\n\ntype PluralFunction = (numItems: number) => number;\n\nfunction loadCatalog(url: string, format: string): Promise<Catalog> {\n\tlet transport;\n\n\t// Check whether this is a valid URL.\n\ttry {\n\t\tconst parsedURL = new URL(url);\n\t\tif (\n\t\t\tparsedURL.protocol === 'https:' ||\n\t\t\tparsedURL.protocol === 'http:' ||\n\t\t\tparsedURL.protocol === 'file:'\n\t\t) {\n\t\t\ttransport = 'http';\n\t\t} else {\n\t\t\tthrow new Error(`unsupported scheme ${parsedURL.protocol}`);\n\t\t}\n\t} catch (e) {\n\t\tif (browserEnvironment()) {\n\t\t\ttransport = 'http';\n\t\t} else {\n\t\t\ttransport = 'fs';\n\t\t}\n\t}\n\n\tlet transportInstance: Transport;\n\tif (transport === 'http') {\n\t\ttransportInstance = new TransportHttp();\n\t} else {\n\t\ttransportInstance = new TransportFs();\n\t}\n\n\ttype Validator = (data: ArrayBuffer) => Catalog;\n\tlet validator: Validator;\n\tif ('json' === format) {\n\t\tvalidator = parseJsonCatalog;\n\t} else {\n\t\tvalidator = parseMoCatalog;\n\t}\n\treturn new Promise<Catalog>((resolve, reject) => {\n\t\ttransportInstance\n\t\t\t.loadFile(url)\n\t\t\t.then(data => {\n\t\t\t\tresolve(validator(data));\n\t\t\t})\n\t\t\t.catch(e => reject(e));\n\t});\n}\n\nfunction assemblePath(\n\tbase: string,\n\tid: string,\n\tdomainname: string,\n\textender: string,\n): string {\n\treturn `${base}/${id}/LC_MESSAGES/${domainname}.${extender}`;\n}\n\nfunction loadLanguageFromObject(\n\tids: Array<string>,\n\tbase: LocaleContainer,\n\tdomainname: string,\n): Promise<Catalog> {\n\tlet catalog: Catalog;\n\n\tfor (let i = 0; i < ids.length; ++i) {\n\t\tconst id = ids[0];\n\t\t// Language exists?\n\t\tif (!Object.prototype.hasOwnProperty.call(base, id)) {\n\t\t\tcontinue;\n\t\t}\n\t\t// LC_MESSAGES?\n\t\tif (!Object.prototype.hasOwnProperty.call(base[id], 'LC_MESSAGES')) {\n\t\t\tcontinue;\n\t\t}\n\t\t// Textdomain?\n\t\tif (\n\t\t\t!Object.prototype.hasOwnProperty.call(base[id].LC_MESSAGES, domainname)\n\t\t) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tcatalog = base[id].LC_MESSAGES[domainname];\n\t}\n\n\treturn new Promise<Catalog>((resolve, reject) => {\n\t\tif (catalog) {\n\t\t\tresolve(catalog);\n\t\t} else {\n\t\t\treject();\n\t\t}\n\t});\n}\n\n/*\n * First tries to load a catalog with the specified charset, then with the\n * charset converted to uppercase (if it differs from the original charset),\n * and finally without a charset.\n */\nasync function loadLanguage(\n\tids: Array<string>,\n\tbase: string | LocaleContainer,\n\tdomainname: string,\n\tformat: string,\n): Promise<Catalog> {\n\tif (typeof base === 'object' && base !== null) {\n\t\treturn loadLanguageFromObject(ids, base, domainname);\n\t}\n\n\treturn new Promise((resolve, reject) => {\n\t\ttype CatalogLoader = (url: string) => Promise<Catalog>;\n\n\t\tconst tries = new Array<CatalogLoader>();\n\t\tids.forEach(id => {\n\t\t\ttries.push(() =>\n\t\t\t\tloadCatalog(\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unnecessary-type-assertion\n\t\t\t\t\tassemblePath(base as string, id, domainname, format),\n\t\t\t\t\tformat,\n\t\t\t\t),\n\t\t\t);\n\t\t});\n\n\t\ttries\n\t\t\t.reduce(\n\t\t\t\t(promise, fn: CatalogLoader) => promise.catch(fn),\n\t\t\t\tPromise.reject(),\n\t\t\t)\n\t\t\t.then(value => resolve(value))\n\t\t\t.catch(e => reject(e));\n\t});\n}\n\nasync function loadDomain(\n\texploded: ExplodedLocale,\n\tlocaleKey: string,\n\tbase: string | LocaleContainer,\n\tdomainname: string,\n\tformat: string,\n): Promise<Catalog> {\n\tconst entries: CatalogEntries = {};\n\n\tconst catalog: Catalog = {\n\t\tmajor: 0,\n\t\tminor: 0,\n\t\tpluralFunction: germanicPlural,\n\t\tentries,\n\t};\n\n\tconst cacheHit = CatalogCache.lookup(localeKey, domainname);\n\tif (cacheHit !== null) {\n\t\t// Promise?\n\t\tif (Promise.resolve(cacheHit) === cacheHit) {\n\t\t\treturn cacheHit;\n\t\t} else {\n\t\t\t// Normal cache hit.\n\t\t\treturn new Promise(resolve => resolve(cacheHit));\n\t\t}\n\t}\n\n\tconst promises = new Array<Promise<void | Catalog>>();\n\tconst results = new Array<Catalog>();\n\n\texploded.forEach((tries, i) => {\n\t\tconst p = loadLanguage(tries, base, domainname, format)\n\t\t\t.then(catalog => (results[i] = catalog))\n\t\t\t.catch(() => {\n\t\t\t\t/* ignore */\n\t\t\t});\n\t\tpromises.push(p);\n\t});\n\n\tawait Promise.all(promises);\n\n\tresults.forEach(result => {\n\t\tcatalog.major = result.major;\n\t\tcatalog.minor = result.minor;\n\t\tcatalog.entries = { ...catalog.entries, ...result.entries };\n\t});\n\n\treturn new Promise(resolve => {\n\t\tresolve(catalog);\n\t});\n}\n\nfunction pluralExpression(str: string): PluralFunction {\n\tconst tokens = str\n\t\t.replace(/[ \\t\\r\\013\\014]/g, '')\n\t\t.replace(/;$/, '')\n\t\t// Do NOT allow square brackets here. JSFuck!\n\t\t.split(/[<>!=]=|&&|\\|\\||[-!*/%+<>=?:;]/);\n\n\tfor (let i = 0; i < tokens.length; ++i) {\n\t\tconst token = tokens[i].replace(/^\\(+/, '').replace(/\\)+$/, '');\n\t\tif (\n\t\t\ttoken !== 'nplurals' &&\n\t\t\ttoken !== 'plural' &&\n\t\t\ttoken !== 'n' &&\n\t\t\t// Does not catch invalid octal numbers but the compiler\n\t\t\t// takes care of that.\n\t\t\tnull === /^[0-9]+$/.exec(token)\n\t\t) {\n\t\t\tthrow new Error('invalid plural function');\n\t\t}\n\t}\n\n\tconst code = 'var nplurals = 1, plural = 0;' + str + '; return 0 + plural';\n\n\t// This may throw an exception!\n\t/* eslint-disable @typescript-eslint/no-implied-eval */\n\treturn new Function('n', code) as PluralFunction;\n}\n\nfunction setPluralFunction(catalog: Catalog): Catalog {\n\tif (!Object.prototype.hasOwnProperty.call(catalog.entries, '')) {\n\t\treturn catalog;\n\t}\n\n\tconst headers = catalog.entries[''][0].split('\\n');\n\theaders.forEach(header => {\n\t\tconst tokens = header.split(':');\n\t\tif ('plural-forms' === (tokens.shift() as string).toLowerCase()) {\n\t\t\tconst code = tokens.join(':');\n\t\t\tcatalog.pluralFunction = pluralExpression(code);\n\t\t}\n\t});\n\n\treturn catalog;\n}\n\nexport function resolveImpl(\n\tdomainname: string,\n\tpath: string | LocaleContainer,\n\tformat: string,\n\tlocaleKey: string,\n): Promise<Catalog> {\n\tconst defaultCatalog: Catalog = {\n\t\tmajor: 0,\n\t\tminor: 0,\n\t\tpluralFunction: germanicPlural,\n\t\tentries: {},\n\t};\n\n\tif (localeKey === 'C' || localeKey === 'POSIX') {\n\t\treturn new Promise(resolve => resolve(defaultCatalog));\n\t}\n\n\treturn new Promise(resolve => {\n\t\tconst exploded = explodeLocale(splitLocale(localeKey) as SplitLocale, true);\n\t\tloadDomain(exploded, localeKey, path, domainname, format)\n\t\t\t.then(catalog => {\n\t\t\t\tsetPluralFunction(catalog);\n\t\t\t\tCatalogCache.store(localeKey, domainname, catalog);\n\t\t\t\tresolve(catalog);\n\t\t\t})\n\t\t\t.catch(() => {\n\t\t\t\tCatalogCache.store(localeKey, domainname, defaultCatalog);\n\t\t\t\tresolve(defaultCatalog);\n\t\t\t});\n\t});\n}\n","import { splitLocale } from './split-locale';\n\nfunction tagsEqual(left: Array<string>, right: Array<string>): boolean {\n\tif (left.length !== right.length) {\n\t\treturn false;\n\t}\n\n\tfor (let i = 0; i < left.length; ++i) {\n\t\tif (left[i].toLowerCase() !== right[i].toLowerCase()) {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\treturn true;\n}\n\nexport function selectLocale(\n\tsupported: Array<string>,\n\trequested: Array<string>,\n): string {\n\tlet languageMatch: string = '';\n\n\tfor (let i = 0; i < requested.length; ++i) {\n\t\tconst wanted = splitLocale(requested[i]);\n\t\tif (!wanted) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tfor (let j = 0; j < supported.length; ++j) {\n\t\t\tconst got = splitLocale(supported[j]);\n\t\t\tif (!got) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (tagsEqual(wanted.tags, got.tags)) {\n\t\t\t\treturn supported[j];\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!languageMatch.length &&\n\t\t\t\twanted.tags[0].toLowerCase() === got.tags[0].toLowerCase()\n\t\t\t) {\n\t\t\t\tlanguageMatch = supported[j];\n\t\t\t}\n\t\t}\n\t}\n\n\tif (languageMatch.length) {\n\t\treturn languageMatch;\n\t}\n\n\treturn 'C';\n}\n","const tagHyphenRegex = new RegExp('^[a-z0-9]+(?:-[a-z0-9]+)*$', 'i');\nconst tagUnderscoreRegex = new RegExp('^[a-z0-9]+(?:_[a-z0-9]+)*$', 'i');\n\nexport interface SplitLocale {\n\ttags: Array<string>;\n\tunderscoreSeparator: boolean;\n\tcharset?: string;\n\tmodifier?: string;\n}\n\nexport function splitLocale(locale: string): SplitLocale | null {\n\tlet charset: string = '', modifier: string = '';\n\n\tconst underscoreSeparator = locale.includes('_');\n\n\tlocale = locale.replace(/@([a-z]+)$/i, (_, match: string) => {\n\t\tmodifier = match;\n\t\treturn '';\n\t});\n\n\tlocale = locale.replace(/\\.([-0-9a-z]+)$/i, (_, match: string) => {\n\t\tcharset = match;\n\t\treturn '';\n\t});\n\n\tif (underscoreSeparator) {\n\t\tif (!tagUnderscoreRegex.exec(locale)) {\n\t\t\treturn null;\n\t\t}\n\t} else {\n\t\tif (!tagHyphenRegex.exec(locale)) {\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tconst separator = underscoreSeparator ? '_' : '-';\n\tconst tags = locale.split(separator);\n\n\tconst split: SplitLocale = { tags: tags, underscoreSeparator };\n\n\tif (charset.length) {\n\t\tsplit.charset = charset;\n\t}\n\n\tif (modifier.length) {\n\t\tsplit.modifier = modifier;\n\t}\n\n\treturn split;\n}\n","import { resolveImpl } from './resolve-impl';\nimport { CatalogCache } from './catalog-cache';\nimport { Catalog } from './catalog';\nimport { browserEnvironment } from './browser-environment';\nimport { gettextImpl } from './gettext-impl';\nimport { germanicPlural } from './germanic-plural';\nimport { splitLocale } from './split-locale';\nimport { pathSeparator } from './path-separator';\nimport { userLocales } from './user-locales';\nimport { selectLocale } from './select-locale';\nimport { LocaleContainer } from './locale-container';\n\n/**\n * Represents a mapping of placeholder strings to the values that they should be replaced with.\n * Placeholders must match the regular expression `/^[_a-zA-Z][_a-zA-Z0-9]*$/`.\n * @remarks\n * Placeholders provide a way to dynamically replace certain strings in a translatable message.\n *\n * @example\n * ```typescript\n * const placeholders: Placeholders = {\n * \t'name': 'John Doe',\n * \t'age': 30,\n * \t// Add more placeholders as needed\n * };\n * ```\n *\n * A typical call would look like this:\n *\n * ```typescript\n * console.log(gtx._x('User {name} is {age} years old.'));\n * ```\n * @public\n */\nexport interface Placeholders {\n\t/* eslint-disable-next-line @typescript-eslint/no-explicit-any */\n\t[placeholder: string]: any;\n}\n\n/**\n * A Textdomain is a container for an esgettext configuration and all loaded\n * LocaleContainer for the textual domain selected.\n *\n * The actual translation methods have quite funny names like `_()` or\n * `_x()`. The purpose of this naming convention is to make the\n * internationalization of your programs as little obtrusive as possible.\n * Most of the times you just have to exchange\n *\n * ```\n * doSomething('Hello, world!');\n * ```\n *\n * with\n *\n * ```\n * doSomething(gtx._('Hello, world!'));\n * ```\n *\n * Besides, depending on the string extractor you are using, it may be useful\n * that the method names do not collide with method names from other packages.\n */\nexport class Textdomain {\n\t// FIXME! Use a default export instead?\n\tprivate static domains: { [key: string]: Textdomain } = {};\n\tprivate static readonly cache = CatalogCache.getInstance();\n\tprivate static boundDomains: { [key: string]: string | LocaleContainer } = {};\n\tprivate static _locale = 'C';\n\n\tprivate domain: string;\n\tprivate _catalogFormat = 'json';\n\tprivate catalog: Catalog;\n\n\tprivate constructor() {\n\t\t/* Prevent instantiation. */\n\t}\n\n\t/**\n\t * Instantiate a Textdomain object. Textdomain objects are singletons\n\t * for each textdomain identifier.\n\t *\n\t * @param textdomain - the textdomain of your application or library.\n\t */\n\tgetInstance: (textdomain: string) => Textdomain;\n\n\t/**\n\t * Retrieve a translation for a string.\n\t *\n\t * @param msgid - the string to translate\n\t *\n\t * @returns the translated string\n\t */\n\t_: (msgid: string) => string;\n\n\t/**\n\t * Retrieve a translation for a string containing a possible plural.\n\t * You will almost always want to call {@link _nx} instead so that\n\t * you can interpolate the number of items into the strings.\n\t *\n\t * @param msgid - the string in the singular\n\t * @param msgidPlural - the string in the plural\n\t * @param numItems - the number of items\n\t *\n\t * @returns the translated string\n\t */\n\t_n: (msgid: string, msgidPlural: string, numItems: number) => string;\n\n\t/**\n\t * Translate a string with a context.\n\t *\n\t * @param msgctxt - the message context\n\t * @param msgid - the string to translate\n\t *\n\t * @returns the translated string\n\t */\n\t_p: (msgctxt: string, msgid: string) => string;\n\n\t/**\n\t * The method `_np()` combines `_n()` with `_p()`.\n\t * You will almost always want to call {@link _npx} instead so that\n\t * you can interpolate the number of items into the strings.\n\n\t *\n\t * @param msgctxt - the message context\n\t * @param msgid - the message id\n\t * @param placeholders - a dictionary with placehoders\n\t * @returns the translated string\n\t */\n\t_np: (\n\t\tmsgctxt: string,\n\t\tmsgid: string,\n\t\tmsgidPlural: string,\n\t\tnumItems: number,\n\t) => string;\n\n\t/**\n\t * Translate a string with placeholders. The placeholders should be\n\t * wrapped into curly braces and must match the regular expression\n\t * \"[_a-zA-Z][_a-zA-Z0-9]*\".\n\t *\n\t * @param msgid - the msgid to translate\n\t * @param placeholders - an optional dictionary of placeholders\n\t *\n\t * @returns the translated string with placeholders expanded\n\t */\n\t_x: (msgid: string, placeholders?: Placeholders) => string;\n\n\t/**\n\t * Translate a string with a plural expression with placeholders.\n\t *\n\t * @param msgid - the string in the singular\n\t * @param msgidPlural - the string in the plural\n\t * @param numItems - the number of items\n\t * @param placeholders - an optional dictionary of placeholders\n\t *\n\t * @returns the translated string\n\t */\n\t_nx: (\n\t\tmsgid: string,\n\t\tmsgidPlural: string,\n\t\tnumItems: number,\n\t\tplaceholders?: Placeholders,\n\t) => string;\n\n\t/**\n\t * The method `_px()` combines `_p()` with `_x()`.\n\t *\n\t * @param msgctxt - the message context\n\t * @param msgid - the message id\n\t * @param placeholders - an optional dictionary with placehoders\n\t * @returns the translated string\n\t */\n\t_px: (msgctxt: string, msgid: string, placeholders?: Placeholders) => string;\n\n\t/**\n\t * The method `_npx()` brings it all together. It combines `_n()` and\n\t * `_p()` and `_x()`.\n\t *\n\t * @param msgctxt - the message context\n\t * @param msgid - the message id\n\t * @param msgidPlural - the plural string\n\t * @param numItems - the number of items\n\t * @param placeholders - an optional dictionary with placehoders\n\t * @returns the translated string\n\t */\n\t_npx: (\n\t\tmsgctxt: string,\n\t\tmsgid: string,\n\t\tmsgidPlural: string,\n\t\tnumItems: number,\n\t\tplaceholders?: Placeholders,\n\t) => string;\n\n\tprivate static getCatalog(locale: string, textdomain: string): Catalog {\n\t\tconst catalog = CatalogCache.lookup(locale, textdomain);\n\t\tif (!catalog || Promise.resolve(catalog) === catalog) {\n\t\t\treturn {\n\t\t\t\tmajor: 0,\n\t\t\t\tminor: 0,\n\t\t\t\tpluralFunction: germanicPlural,\n\t\t\t\tentries: {},\n\t\t\t};\n\t\t}\n\n\t\treturn catalog as Catalog;\n\t}\n\n\t/**\n\t * Retrieve a translation for a string with a fixed locale.\n\t *\n\t * @param locale - the locale identifier\n\t * @param msgid - the string to translate\n\t *\n\t * @returns the translated string\n\t */\n\t_l: (locale: string, msgid: string) => string;\n\n\t/**\n\t * Retrieve a translation for a string containing a possible plural with\n\t * a fixed locale.\n\t * You will almost always want to call {@link _nx} instead so that\n\t * you can interpolate the number of items into the strings.\n\t *\n\t * @param locale - the locale identifier\n\t * @param msgid - the string in the singular\n\t * @param msgidPlural - the string in the plural\n\t * @param numItems - the number of items\n\t *\n\t * @returns the translated string\n\t */\n\t_ln: (\n\t\tlocale: string,\n\t\tmsgid: string,\n\t\tmsgidPlural: string,\n\t\tnumItems: number,\n\t) => string;\n\n\t/**\n\t * Translate a string with a context with a fixed locale.\n\t *\n\t * @param locale - the locale identifier\n\t * @param msgctxt - the message context\n\t * @param msgid - the string to translate\n\t *\n\t * @returns the translated string\n\t */\n\t_lp: (locale: string, msgctxt: string, msgid: string) => string;\n\n\t/**\n\t * The method `_lnp()` combines `_ln()` with `_lp()`.\n\t * You will almost always want to call {@link _npx} instead so that\n\t * you can interpolate the number of items into the strings.\n\n\t *\n\t * @param locale - the locale identifier\n\t * @param msgctxt - the message context\n\t * @param msgid - the message id\n\t * @param placeholders - a dictionary with placehoders\n\t * @returns the translated string\n\t */\n\t_lnp: (\n\t\tlocale: string,\n\t\tmsgctxt: string,\n\t\tmsgid: string,\n\t\tmsgidPlural: string,\n\t\tnumItems: number,\n\t) => string;\n\n\t/**\n\t * Translate a string with placeholders for a fixed locale.\n\t * The placeholders should be\n\t * wrapped into curly braces and must match the regular expression\n\t * \"[_a-zA-Z][_a-zA-Z0-9]*\".\n\t *\n\t * @param locale - the locale identifier\n\t * @param msgid - the msgid to translate\n\t * @param placeholders - an optional dictionary of placeholders\n\t *\n\t * @returns the translated string with placeholders expanded\n\t */\n\t_lx: (locale: string, msgid: string, placeholders?: Placeholders) => string;\n\n\t/**\n\t * Translate a string with a plural expression with placeholders into a\n\t * fixed locale.\n\t *\n\t * @param locale - the locale identifier\n\t * @param msgid - the string in the singular\n\t * @param msgidPlural - the string in the plural\n\t * @param numItems - the number of items\n\t * @param placeholders - an optional dictionary of placeholders\n\t *\n\t * @returns the translated string\n\t */\n\t_lnx: (\n\t\tlocale: string,\n\t\tmsgid: string,\n\t\tmsgidPlural: string,\n\t\tnumItems: number,\n\t\tplaceholders?: Placeholders,\n\t) => string;\n\n\t/**\n\t * The method `_lpx()` combines `_lp()` with `_lx()`.\n\t *\n\t * @param locale - the locale identifier\n\t * @param msgctxt - the message context\n\t * @param msgid - the message id\n\t * @param placeholders - an optional dictionary with placehoders\n\t * @returns the translated string\n\t */\n\t_lpx: (msgctxt: string, msgid: string, placeholders?: Placeholders) => string;\n\n\t/**\n\t * The method `_lnpx()` brings it all together. It combines `_ln()` and\n\t * `_lp()` and `_lx()`.\n\t *\n\t * @param locale - the locale identifier\n\t * @param msgctxt - the message context\n\t * @param msgid - the message id\n\t * @param msgidPlural - the plural string\n\t * @param numItems - the number of items\n\t * @param placeholders - an optional dictionary with placehoders\n\t * @returns the translated string\n\t */\n\t_lnpx: (\n\t\tlocale: string,\n\t\tmsgctxt: string,\n\t\tmsgid: string,\n\t\tmsgidPlural: string,\n\t\tnumItems: number,\n\t\tplaceholders?: Placeholders,\n\t) => string;\n\n\tprivate static expand(\n\t\tmsg: string,\n\t\tplaceholders: { [key: string]: string },\n\t): string {\n\t\treturn msg.replace(/\\{([a-zA-Z][0-9a-zA-Z]*)\\}/g, (_, match: string) => {\n\t\t\tif (Object.prototype.hasOwnProperty.call(placeholders, match)) {\n\t\t\t\treturn placeholders[match];\n\t\t\t} else {\n\t\t\t\treturn `{${match}}`;\n\t\t\t}\n\t\t});\n\t}\n\n\tstatic getInstance(textdomain: string): Textdomain {\n\t\tif (\n\t\t\ttypeof textdomain === 'undefined' ||\n\t\t\ttextdomain === null ||\n\t\t\ttextdomain === ''\n\t\t) {\n\t\t\tthrow new Error('Cannot instantiate TextDomain without a textdomain');\n\t\t}\n\n\t\tif (Object.prototype.hasOwnProperty.call(Textdomain.domains, textdomain)) {\n\t\t\treturn Textdomain.domains[textdomain];\n\t\t} else {\n\t\t\tconst domain = new Textdomain();\n\t\t\tdomain.domain = textdomain;\n\t\t\tTextdomain.domains[textdomain] = domain;\n\t\t\tdomain.catalog = {\n\t\t\t\tmajor: 0,\n\t\t\t\tminor: 0,\n\t\t\t\tpluralFunction: germanicPlural,\n\t\t\t\tentries: {},\n\t\t\t};\n\n\t\t\t/* We generate most of the methods dynamically. This is really\n\t\t\t * ugly but it reduces the size of the bundle significantly.\n\t\t\t */\n\t\t\tif (typeof Textdomain.prototype['_'] !== 'function') {\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t\t\t\tconst g = gettextImpl;\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/unbound-method\n\t\t\t\tconst x = Textdomain.expand;\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/unbound-method\n\t\t\t\tconst lk = CatalogCache.lookup;\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/unbound-method\n\t\t\t\tconst gc = this.getCatalog;\n\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\t\t\t\tconst e = {\n\t\t\t\t\tmajor: 0,\n\t\t\t\t\tminor: 0,\n\t\t\t\t\tpluralFunction: germanicPlural,\n\t\t\t\t\tentries: {},\n\t\t\t\t};\n\n\t\t\t\t// Arguments in standardized order.\n\t\t\t\tconst argNames = ['msgctxt', 'msgid', 'msgidPlural', 'numItems'];\n\n\t\t\t\t// Method signatures (range of arguments to pick.)\n\t\t\t\tconst methodArgs: { [key: string]: Array<number> } = {\n\t\t\t\t\t'': [1, 2],\n\t\t\t\t\tn: [1, 4],\n\t\t\t\t\tp: [0, 2],\n\t\t\t\t\tnp: [0, 4],\n\t\t\t\t};\n\n\t\t\t\tconst tp = 'Textdomain.prototype._';\n\t\t\t\tconst f = 'function';\n\t\t\t\tconst c = 'catalog:this.catalog';\n\t\t\t\tconst tc = 'const catalog=Textdomain.getCatalog(l,this.textdomain());';\n\t\t\t\tconst cc = 'catalog:catalog';\n\t\t\t\tconst rg = 'return g';\n\t\t\t\tconst rx = 'return x';\n\t\t\t\tfor (const m in methodArgs) {\n\t\t\t\t\tif ({}.hasOwnProperty.call(methodArgs, m)) {\n\t\t\t\t\t\tconst range = methodArgs[m];\n\t\t\t\t\t\tconst slice = argNames.slice(range[0], range[1]);\n\t\t\t\t\t\tconst a = slice.join(',');\n\t\t\t\t\t\tconst k = slice.map(a => `${a}:${a}`).join(',');\n\t\t\t\t\t\t// FIXME! expand arguments msgid => msgid: msgid! But\n\t\t\t\t\t\t// shorten the actual arguments to single letters.\n\n\t\t\t\t\t\t// eslint-disable-next-line no-eval\n\t\t\t\t\t\teval(`\n${tp}${m}=${f}(${a}){${rg}({${k},${c}});};\n${tp}l${m}=${f}(l,${a}){${tc}${rg}({${k},${cc}});};\n${tp}${m}x=${f}(${a},p){${rx}(g({${k},${c}}),p||{});};\n${tp}l${m}x=${f}(l,${a},p){${tc}${rx}(g({${k},${cc}}),p||{});};\n`);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn domain;\n\t\t}\n\t}\n\n\t/**\n\t * Delete all existing singletons. This method should usually be called\n\t * only, when you want to free memory.\n\t */\n\tstatic clearInstances(): void {\n\t\tTextdomain.boundDomains = {};\n\t}\n\n\t/**\n\t * This method is used for testing. Do not use it yourself!\n\t */\n\tstatic forgetInstances(): void {\n\t\tTextdomain.clearInstances();\n\t\tTextdomain.domains = {};\n\t}\n\n\t/**\n\t * Query the locale in use.\n\t */\n\tstatic get locale(): string {\n\t\treturn Textdomain._locale;\n\t}\n\n\t/**\n\t * Change the locale.\n\t *\n\t * For the web you can use all valid language identifier tags that\n\t * [BCP47](https://tools.ietf.org/html/bcp47) allows\n\t * (and actually a lot more). The tag is always used unmodified.\n\t *\n\t * For server environments, the locale identifier has to match the following\n\t * scheme:\n\t *\n\t * `ll_CC.charset\\@modifier`\n\t *\n\t * * `ll` is the two- or three-letter language code.\n\t * * `CC` is the optional two-letter country code.\n\t * * `charset` is an optional character set (letters, digits, and the hyphen).\n\t * * `modifier` is an optional variant (letters and digits).\n\t *\n\t * The language code is always converted to lowercase, the country code is\n\t * converted to uppercase, variant and charset are used as is.\n\t *\n\t * @param locale - the locale identifier\n\t * @returns the locale in use\n\t */\n\tstatic set locale(locale: string) {\n\t\tconst ucLocale = locale.toUpperCase();\n\n\t\tif (ucLocale === 'POSIX' || ucLocale === 'C') {\n\t\t\tthis._locale = 'POSIX';\n\t\t\treturn;\n\t\t}\n\n\t\tconst split = splitLocale(locale);\n\t\tif (!split) {\n\t\t\tthrow new Error('invalid locale identifier');\n\t\t}\n\n\t\t// The check from splitLocale() is sufficient.\n\t\tif (browserEnvironment()) {\n\t\t\tthis._locale = locale;\n\t\t\treturn;\n\t\t}\n\n\t\t// Node.\n\t\tsplit.tags[0] = split.tags[0].toLowerCase();\n\t\tif (split.tags.length > 1) {\n\t\t\tsplit.tags[1] = split.tags[1].toUpperCase();\n\t\t}\n\n\t\tconst separator = split.underscoreSeparator ? '_' : '-';\n\t\tthis._locale = split.tags.join(separator);\n\n\t\tif (typeof split.charset !== 'undefined') {\n\t\t\tthis._locale += '.' + split.charset;\n\t\t}\n\n\t\tif (typeof split.modifier !== 'undefined') {\n\t\t\tthis._locale += '@' + split.modifier;\n\t\t}\n\t}\n\n\t/**\n\t * A textdomain is an identifier for your application or library. It is\n\t * the basename of your translation files which are either TEXTDOMAIN.json\n\t * or TEXTDOMAIN.mo, depending on the format you have chosen.\n\t *\n\t * FIXME! This should be a getter!\n\t *\n\t * @returns the textdomain\n\t */\n\tpublic textdomain(): string {\n\t\treturn this.domain;\n\t}\n\n\t/**\n\t * Bind a textdomain to a certain path or queries the path that a\n\t * textdomain is bound to. The catalog file will be searched\n\t * in `${path}/locale/LC_MESSAGES/${domainname}.EXT`.\n\t *\n\t * Alternatively, you can pass a [[`LocaleContainer`]] that holds the\n\t * catalogs in memory.\n\t *\n\t * @param path - the base path or [[`LocaleContainer`]] for this textdomain\n\t */\n\tbindtextdomain(path?: string | LocaleContainer): string | LocaleContainer {\n\t\tif (typeof path !== 'undefined') {\n\t\t\tTextdomain.boundDomains[this.domain] = path;\n\t\t}\n\n\t\treturn Textdomain.boundDomains[this.domain];\n\t}\n\n\t/**\n\t * Resolve a textdomain, i.e. load the LocaleContainer for this domain and all\n\t * of its dependencies for the currently selected locale or the locale\n\t * specified.\n\t *\n\t * The promise will always resolve. If no catalog was found, an empty\n\t * catalog will be returned that is still usable.\n\t *\n\t * @param locale - an optional locale identifier, defaults to Textdomain.locale\n\t *\n\t * @returns a promise for a Catalog that will always resolve.\n\t */\n\tasync resolve(locale?: string): Promise<Catalog> {\n\t\tconst promises = [this.resolve1(locale)];\n\t\tfor (const td in Textdomain.domains) {\n\t\t\tif (\n\t\t\t\tObject.prototype.hasOwnProperty.call(Textdomain.domains, td) &&\n\t\t\t\tTextdomain.domains[td] !== this\n\t\t\t) {\n\t\t\t\tpromises.push(Textdomain.domains[td].resolve1(locale));\n\t\t\t}\n\t\t}\n\n\t\treturn Promise.all(promises).then(values => {\n\t\t\treturn new Promise(resolve => resolve(values[0]));\n\t\t});\n\t}\n\n\tprivate async resolve1(locale?: string): Promise<Catalog> {\n\t\tlet path = this.bindtextdomain();\n\n\t\tif (typeof path === 'undefined' || path === null) {\n\t\t\tconst parts = browserEnvironment()\n\t\t\t\t? ['', 'assets', 'locale']\n\t\t\t\t: ['src', 'assets', 'locale'];\n\t\t\tpath = parts.join(pathSeparator());\n\t\t}\n\n\t\tconst resolvedLocale = locale ? locale : Textdomain.locale;\n\t\treturn resolveImpl(\n\t\t\tthis.domain,\n\t\t\tpath,\n\t\t\tthis.catalogFormat,\n\t\t\tresolvedLocale,\n\t\t).then(catalog => {\n\t\t\tif (!locale) {\n\t\t\t\tthis.catalog = catalog;\n\t\t\t}\n\t\t\treturn new Promise(resolve => resolve(catalog));\n\t\t});\n\t}\n\n\t/**\n\t * Get the catalog format in use.\n\t *\n\t * @returns one of 'json' or 'mo' (default is 'json')\n\t */\n\tget catalogFormat(): string {\n\t\treturn this._catalogFormat;\n\t}\n\n\t/**\n\t * Set the catalog format to use.\n\t *\n\t * @param format - one of 'json' or 'mo'\n\t */\n\tset catalogFormat(format: string) {\n\t\tformat = format.toLowerCase();\n\t\tif (format === 'json') {\n\t\t\tthis._catalogFormat = 'json';\n\t\t} else if (format === 'mo') {\n\t\t\tthis._catalogFormat = 'mo';\n\t\t} else {\n\t\t\tthrow new Error(`unsupported format ${format}`);\n\t\t}\n\t}\n\n\t/**\n\t * Queries the user's preferred locales. On the server it queries the\n\t * environment variables `LANGUAGE`, `LC_ALL`, `LANG`, and `LC_MESSAGES`\n\t * (in that order). In the browser, it parses it checks the user preferences\n\t * in the variables `navigator.languages`, `navigator.language`,\n\t * `navigator.userLanguage`, `navigator.browserLanguage`, and\n\t * `navigator.systemLanguage`.\n\t *\n\t * @returns the set of locales in order of preference\n\t *\n\t * Added in \\@runtime 0.1.0.\n\t */\n\tstatic userLocales(): Array<string> {\n\t\treturn userLocales();\n\t}\n\n\t/**\n\t * Select one of the supported locales from a list of locales accepted by\n\t * the user.\n\t *\n\t * @param supported - the list of locales supported by the application\n\t * @param requested - the list of locales accepted by the user\n\t *\n\t * If called with just one argument, then the list of requested locales\n\t * is determined by calling [[Textdomain.userLocales]].\n\t *\n\t * @returns the negotiated locale or 'C' if not possible.\n\t */\n\tstatic selectLocale(\n\t\tsupported: Array<string>,\n\t\trequested?: Array<string>,\n\t): string {\n\t\treturn selectLocale(\n\t\t\tsupported,\n\t\t\trequested ?? Textdomain.userLocales(),\n\t\t);\n\t}\n\n\t/**\n\t * A no-op method for string marking.\n\t *\n\t * Sometimes you want to mark strings for translation but do not actually\n\t * want to translate them, at least not at the time of their definition.\n\t * This is often the case, when you have to preserve the original string.\n\t *\n\t * Take this example:\n\t *\n\t * ```\n\t * orangeColors = [gtx.N_('coral'), gtx.N_('tomato'), gtx.N_('orangered'),\n\t * gtx.N_('gold'), gtx.N_('orange'), gtx.N_('darkorange')]\n\t * ```\n\t *\n\t * These are standard CSS colors, and you cannot translate them inside\n\t * CSS styles. But for presentation you may want to translate them later:\n\t *\n\t * ```\n\t * console.log(gtx._x(\"The css color '{color}' is {translated}.\",\n\t * {\n\t * color: orangeColors[2],\n\t * translated: gtx._(orangeColors[2]),\n\t * }\n\t * )\n\t * );\n\t * ```\n\t *\n\t * In other words: The method just marks strings for translation, so that\n\t * the extractor `esgettext-xgettext` finds them but it does not actually\n\t * translate anything.\n\t *\n\t * Similar methods are available for other cases (with placeholder\n\t * expansion, context, or both). They are *not* available for plural\n\t * methods because that would not make sense.\n\t *\n\t * Note that all of these methods are also available as instance methods.\n\t *\n\t * @param msgid - the message id\n\t * @returns the original string\n\t */\n\tstatic N_(msgid: string): string {\n\t\treturn msgid;\n\t}\n\n\t/**\n\t * Does the same as the static method `N_()`.\n\t *\n\t * @param msgid - the message id\n\t * @returns the original string\n\t */\n\tN_(msgid: string): string {\n\t\treturn msgid;\n\t}\n\n\t/**\n\t * Same as `N_()` but with placeholder expansion.\n\t *\n\t * @param msgid - the message id\n\t * @param placeholders - a dictionary of placeholders\n\t * @returns the original string with placeholders expanded\n\t */\n\tN_x(msgid: string, placeholders?: Placeholders): string {\n\t\treturn Textdomain.expand(msgid, placeholders ?? {});\n\t}\n\n\t/**\n\t * Does the same as the static method `N_x()`.\n\t *\n\t * @param msgid - the message id\n\t * @param placeholders - a dictionary of placeholders\n\t * @returns the original string with placeholders expanded\n\t */\n\tstatic N_x(msgid: string, placeholders?: Placeholders): string {\n\t\treturn Textdomain.expand(msgid, placeholders ?? {});\n\t}\n\n\t/**\n\t * Same as `N_()` but with context.\n\t *\n\t * @param _msgctxt - the message context (not used)\n\t * @param msgid - the message id\n\t * @returns the original string\n\t */\n\tN_p(_msgctxt: string, msgid: string): string {\n\t\treturn msgid;\n\t}\n\n\t/**\n\t * Does the same as the static method `N_p()`.\n\t *\n\t * @param _msgctxt - the message context (not used)\n\t * @param msgid - the message id\n\t * @returns the original string with placeholders expanded\n\t */\n\tstatic N_p(_msgctxt: string, msgid: string): string {\n\t\treturn msgid;\n\t}\n\n\t/**\n\t * Same as `N_()` but with context and placeholder expansion.\n\t *\n\t * @param _msgctxt - the message context (not used)\n\t * @param msgid - the message id\n\t * @param placeholders - a dictionary of placeholders\n\t * @returns the original string with placeholders expanded\n\t */\n\tN_px(_msgctxt: string, msgid: string, placeholders?: Placeholders): string {\n\t\treturn Textdomain.expand(msgid, placeholders ?? {});\n\t}\n\n\t/**\n\t * Does the same as the static method `N_px()`.\n\t *\n\t * @param _msgctxt - the message context (not used)\n\t * @param msgid - the message id\n\t * @param placeholders - a dictionary of placeholders\n\t * @returns the original string with placeholders expanded\n\t */\n\tstatic N_px(\n\t\t_msgctxt: string,\n\t\tmsgid: string,\n\t\tplaceholders?: Placeholders,\n\t): string {\n\t\treturn Textdomain.expand(msgid, placeholders ?? {});\n\t}\n}\n","let userLocalesSelected = ['C'];\n\n/*\n * Force an execution environment. By default, the environment (NodeJS or\n * browser) is auto-detected. You can force the library to assume a certain\n * environment with this function.\n *\n * @param browser - whether to assume a browser or not\n * @returns the new setting.\n */\nexport function userLocales(locales?: Array<string>): Array<string> {\n\tif (typeof locales !== 'undefined') {\n\t\tuserLocalesSelected = locales;\n\t}\n\n\treturn userLocalesSelected;\n}\n","import { browserEnvironment } from './core/browser-environment';\nbrowserEnvironment(true);\n\nimport { pathSeparator } from './core/path-separator';\npathSeparator('/');\n\n/* eslint-disable @typescript-eslint/no-explicit-any */\n\nimport { userLocales } from './core/user-locales';\nconst locales = new Array<string>();\nif (window.navigator.languages) {\n\tlocales.push(...window.navigator.languages);\n}\nif (typeof window.navigator.language !== 'undefined') {\n\tlocales.push(window.navigator.language);\n}\nconst nav: { [key: string]: string } = window.navigator as unknown as { [key: string]: string };\n\nif (Object.prototype.hasOwnProperty.call(nav, 'userLanguage') && nav.userLanguage) {\n\tlocales.push(nav.userLanguage);\n}\nif (Object.prototype.hasOwnProperty.call(nav, 'browserLanguage') && nav['browserLanguage']) {\n\tlocales.push(nav.browserLanguage);\n}\nif (Object.prototype.hasOwnProperty.call(nav, 'systemLanguage') && nav['systemLanguage']) {\n\tlocales.push(nav.systemLanguage);\n}\nuserLocales(locales);\n\nexport * from './core';\nexport { parseMoCatalog } from './parser';\n","export * from './parse-mo-catalog';\nexport * from './parse-json-catalog';\n","import { Catalog } from '../core/catalog';\n\nexport function validateJsonCatalog(udata: unknown): Catalog {\n\t// We could use ajv but it results in almost 300 k minimized code\n\t// for the browser bundle. This validator instead is absolutely\n\t// minimalistic, and only avoids exceptions that can occur, when\n\t// accessing entries.\n\n\tif (udata === null || typeof udata === 'undefined') {\n\t\tthrow new Error('catalog is either null or undefined');\n\t}\n\n\tconst data = udata as Catalog;\n\tif (data.constructor !== Object) {\n\t\tthrow new Error('catalog must be a dictionary');\n\t}\n\n\t// We don't care about major and minor because they are actually not\n\t// used.\n\n\tif (!Object.prototype.hasOwnProperty.call(data, 'entries')) {\n\t\tthrow new Error('catalog.entries does not exist');\n\t}\n\n\tconst entries = data.entries;\n\tif (entries === null || typeof entries === 'undefined') {\n\t\tthrow new Error('catalog.entries are not defined or null');\n\t}\n\n\tif (entries.constructor !== Object) {\n\t\tthrow new Error('catalog.entries must be a dictionary');\n\t}\n\n\tfor (const [key, value] of Object.entries(entries)) {\n\t\tif (!Array.isArray(value)) {\n\t\t\tthrow new Error(`catalog entry for key '${key}' is not an array`);\n\t\t}\n\t}\n\n\treturn data;\n}\n\nexport function parseJsonCatalog(json: ArrayBuffer): Catalog {\n\tconst text = new TextDecoder().decode(json);\n\tconst data = JSON.parse(text) as unknown;\n\n\treturn validateJsonCatalog(data);\n}\n","import { Catalog } from '../core/catalog';\nimport { germanicPlural } from '../core/germanic-plural';\nimport { DataViewlet } from '../core/data-viewlet';\n\n/* eslint-disable @typescript-eslint/no-explicit-any, no-control-regex, no-bitwise */\n\ninterface POHeader {\n\t[key: string]: string;\n}\n\n/*\n * Parse an MO file.\n *\n * An exception is thrown for invalid data.\n *\n * @param raw - The input as either a binary `String`, any `Array`-like byte\n * storage (`Array`, `Uint8Array`, `Arguments`, `jQuery(Array)`, ...)\n * @returns a Catalog\n */\nexport function parseMoCatalog(raw: ArrayBuffer): Catalog {\n\tconst catalog: Catalog = {\n\t\tmajor: 0,\n\t\tminor: 0,\n\t\tentries: {},\n\t\tpluralFunction: germanicPlural,\n\t};\n\tlet offset = 0;\n\n\tconst blob = new DataViewlet(new Uint8Array(raw), 'ascii');\n\n\tconst magic = blob.readUInt32LE(offset);\n\n\ttype Reader = (buf: DataViewlet, off: number) => number;\n\tlet reader: Reader;\n\tif (magic === 0x950412de) {\n\t\t/* eslint-disable-next-line @typescript-eslint/explicit-function-return-type */\n\t\treader = (buf, off) => buf.readUInt32LE(off);\n\t} else if (magic === 0xde120495) {\n\t\t/* eslint-disable-next-line @typescript-eslint/explicit-function-return-type */\n\t\treader = (buf, off) => buf.readUInt32BE(off);\n\t} else {\n\t\tthrow new Error(`invalid MO magic 0x${magic.toString(16)}`);\n\t}\n\n\toffset += 4;\n\n\t// The revision is encoded in two shorts, major and minor. We don't care\n\t// about the minor revision.\n\tconst major = reader(blob, offset) >> 16;\n\toffset += 4;\n\tif (major > 0) {\n\t\tthrow new Error(`unsupported major revision ${major}`);\n\t}\n\tconst numStrings = reader(blob, offset);\n\toffset += 4;\n\tconst msgidOffset = reader(blob, offset);\n\toffset += 4;\n\tconst msgstrOffset = reader(blob, offset);\n\n\toffset = msgidOffset;\n\tconst origTab = [];\n\tfor (let i = 0; i < numStrings; ++i) {\n\t\tconst l = reader(blob, offset);\n\t\toffset += 4;\n\t\tconst stringOffset = reader(blob, offset);\n\t\toffset += 4;\n\t\torigTab.push([l, stringOffset]);\n\t}\n\n\toffset = msgstrOffset;\n\tconst transTab = [];\n\tfor (let i = 0; i < numStrings; ++i) {\n\t\tconst l = reader(blob, offset);\n\t\toffset += 4;\n\t\tconst stringOffset = reader(blob, offset);\n\t\toffset += 4;\n\t\ttransTab.push([l, stringOffset]);\n\t}\n\n\tconst poHeader: POHeader = {};\n\tfor (let i = 0; i < numStrings; ++i) {\n\t\tconst orig = origTab[i];\n\t\tlet l = orig[0];\n\t\toffset = orig[1];\n\n\t\tconst msgid = blob.readString(offset, l).split('\\u0000')[0];\n\n\t\tconst trans = transTab[i];\n\t\tl = trans[0];\n\t\toffset = trans[1];\n\n\t\tconst msgstr = blob.readString(offset, l).split('\\u0000');\n\n\t\tlet pairs, kv;\n\t\tif (i === 0 && msgid === '') {\n\t\t\tpairs = msgstr[0].split('\\n');\n\t\t\tfor (let j = 0; j < pairs.length; ++j) {\n\t\t\t\tif (pairs[j] !== '') {\n\t\t\t\t\tkv = pairs[j].split(/[ \\t]*:[ \\t]*/);\n\t\t\t\t\tpoHeader[kv[0].toLowerCase()] = kv[1];\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (poHeader['content-type'] !== undefined) {\n\t\t\t\tconst enc = poHeader['content-type'].replace(/.*=/, '');\n\t\t\t\tif (enc !== poHeader['content-type']) {\n\t\t\t\t\tblob.encoding = enc;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tcatalog.entries[msgid] = msgstr;\n\t}\n\n\treturn catalog;\n}\n","import { readFile } from 'fs';\nimport { Transport } from './transport.interface';\n\nexport class TransportFs implements Transport {\n\tloadFile(url: string): Promise<ArrayBuffer> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\treadFile(url, (err, data) => {\n\t\t\t\treturn err ? reject(err) : resolve(data);\n\t\t\t});\n\t\t});\n\t}\n}\n","import { Transport } from './transport.interface';\n\n/* eslint-disable @typescript-eslint/explicit-function-return-type */\n\nexport class TransportHttp implements Transport {\n\tloadFile(url: string): Promise<ArrayBuffer> {\n\t\treturn new Promise((resolve, reject) => {\n\t\t\tconst xhr = new XMLHttpRequest();\n\t\t\txhr.responseType = 'arraybuffer';\n\t\t\txhr.open('GET', url, true);\n\t\t\txhr.onload = () => {\n\t\t\t\tif (xhr.readyState === 4 && xhr.status === 200) {\n\t\t\t\t\tresolve(xhr.response as ArrayBuffer);\n\t\t\t\t} else {\n\t\t\t\t\treject(new Error('get failed with status ' + xhr.status));\n\t\t\t\t}\n\t\t\t};\n\t\t\txhr.onerror = err => reject(err);\n\t\t\txhr.send();\n\t\t});\n\t}\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(474);\n"],"names":["root","factory","exports","module","define","amd","self","isBrowser","browser","getInstance","CatalogCache","instance","clear","cache","lookup","localeKey","textdomain","ptr","Object","prototype","hasOwnProperty","call","store","entry","Promise","resolve","validateJsonCatalog","array","encoding","this","decoder","TextDecoder","_encoding","readUInt32BE","offset","byteLength","byteOffset","Error","readUInt32LE","readString","length","decode","slice","DataViewlet","locale","vary","retval","lsep","underscoreSeparator","i","tags","hasCharset","charset","hasModifier","modifier","charsets","ucCharset","toUpperCase","push","lingua","join","ids","Array","forEach","id","numItems","args","key","msgctxt","msgid","translations","catalog","entries","msgidPlural","pluralForm","pluralFunction","germanicPlural","usePathSeparator","sep","loadLanguageFromObject","base","domainname","LC_MESSAGES","reject","loadLanguage","format","tries","url","transport","transportInstance","validator","parsedURL","URL","protocol","e","browserEnvironment","TransportHttp","TransportFs","parseJsonCatalog","parseMoCatalog","loadFile","then","data","catch","loadCatalog","extender","assemblePath","reduce","promise","fn","value","setPluralFunction","split","header","tokens","shift","toLowerCase","code","str","replace","token","exec","Function","pluralExpression","path","defaultCatalog","major","minor","exploded","cacheHit","promises","results","p","all","result","loadDomain","explodeLocale","splitLocale","tagsEqual","left","right","supported","requested","languageMatch","wanted","j","got","tagHyphenRegex","RegExp","tagUnderscoreRegex","includes","_","match","separator","_catalogFormat","getCatalog","expand","msg","placeholders","Textdomain","domains","domain","g","gettextImpl","x","lk","argNames","methodArgs","n","np","tp","f","c","tc","cc","rg","rx","m","range","a","k","map","eval","clearInstances","boundDomains","forgetInstances","_locale","ucLocale","bindtextdomain","td","resolve1","values","parts","pathSeparator","resolvedLocale","resolveImpl","catalogFormat","userLocales","selectLocale","N_","N_x","N_p","_msgctxt","N_px","userLocalesSelected","locales","window","navigator","languages","language","nav","userLanguage","browserLanguage","systemLanguage","udata","constructor","isArray","json","text","JSON","parse","raw","reader","blob","Uint8Array","magic","buf","off","toString","numStrings","msgidOffset","msgstrOffset","origTab","l","stringOffset","transTab","poHeader","orig","trans","msgstr","pairs","kv","undefined","enc","readFile","err","xhr","XMLHttpRequest","responseType","open","onload","readyState","status","response","onerror","send","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","__webpack_exports__"],"sourceRoot":""}
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
:root {
|
|
2
|
-
--light-hl-0: #001080;
|
|
3
|
-
--dark-hl-0: #9CDCFE;
|
|
4
|
-
--light-hl-1: #000000;
|
|
5
|
-
--dark-hl-1: #D4D4D4;
|
|
6
|
-
--light-hl-2: #795E26;
|
|
7
|
-
--dark-hl-2: #DCDCAA;
|
|
8
|
-
--light-hl-3: #A31515;
|
|
9
|
-
--dark-hl-3: #CE9178;
|
|
10
|
-
--light-hl-4: #0000FF;
|
|
11
|
-
--dark-hl-4: #569CD6;
|
|
12
|
-
--light-hl-5: #AF00DB;
|
|
13
|
-
--dark-hl-5: #C586C0;
|
|
14
|
-
--light-hl-6: #0070C1;
|
|
15
|
-
--dark-hl-6: #4FC1FF;
|
|
16
|
-
--light-hl-7: #800000;
|
|
17
|
-
--dark-hl-7: #808080;
|
|
18
|
-
--light-hl-8: #800000;
|
|
19
|
-
--dark-hl-8: #569CD6;
|
|
20
|
-
--light-hl-9: #000000FF;
|
|
21
|
-
--dark-hl-9: #D4D4D4;
|
|
22
|
-
--light-hl-10: #E50000;
|
|
23
|
-
--dark-hl-10: #9CDCFE;
|
|
24
|
-
--light-hl-11: #0000FF;
|
|
25
|
-
--dark-hl-11: #CE9178;
|
|
26
|
-
--light-hl-12: #008000;
|
|
27
|
-
--dark-hl-12: #6A9955;
|
|
28
|
-
--light-hl-13: #267F99;
|
|
29
|
-
--dark-hl-13: #4EC9B0;
|
|
30
|
-
--light-hl-14: #098658;
|
|
31
|
-
--dark-hl-14: #B5CEA8;
|
|
32
|
-
--light-code-background: #FFFFFF;
|
|
33
|
-
--dark-code-background: #1E1E1E;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
@media (prefers-color-scheme: light) { :root {
|
|
37
|
-
--hl-0: var(--light-hl-0);
|
|
38
|
-
--hl-1: var(--light-hl-1);
|
|
39
|
-
--hl-2: var(--light-hl-2);
|
|
40
|
-
--hl-3: var(--light-hl-3);
|
|
41
|
-
--hl-4: var(--light-hl-4);
|
|
42
|
-
--hl-5: var(--light-hl-5);
|
|
43
|
-
--hl-6: var(--light-hl-6);
|
|
44
|
-
--hl-7: var(--light-hl-7);
|
|
45
|
-
--hl-8: var(--light-hl-8);
|
|
46
|
-
--hl-9: var(--light-hl-9);
|
|
47
|
-
--hl-10: var(--light-hl-10);
|
|
48
|
-
--hl-11: var(--light-hl-11);
|
|
49
|
-
--hl-12: var(--light-hl-12);
|
|
50
|
-
--hl-13: var(--light-hl-13);
|
|
51
|
-
--hl-14: var(--light-hl-14);
|
|
52
|
-
--code-background: var(--light-code-background);
|
|
53
|
-
} }
|
|
54
|
-
|
|
55
|
-
@media (prefers-color-scheme: dark) { :root {
|
|
56
|
-
--hl-0: var(--dark-hl-0);
|
|
57
|
-
--hl-1: var(--dark-hl-1);
|
|
58
|
-
--hl-2: var(--dark-hl-2);
|
|
59
|
-
--hl-3: var(--dark-hl-3);
|
|
60
|
-
--hl-4: var(--dark-hl-4);
|
|
61
|
-
--hl-5: var(--dark-hl-5);
|
|
62
|
-
--hl-6: var(--dark-hl-6);
|
|
63
|
-
--hl-7: var(--dark-hl-7);
|
|
64
|
-
--hl-8: var(--dark-hl-8);
|
|
65
|
-
--hl-9: var(--dark-hl-9);
|
|
66
|
-
--hl-10: var(--dark-hl-10);
|
|
67
|
-
--hl-11: var(--dark-hl-11);
|
|
68
|
-
--hl-12: var(--dark-hl-12);
|
|
69
|
-
--hl-13: var(--dark-hl-13);
|
|
70
|
-
--hl-14: var(--dark-hl-14);
|
|
71
|
-
--code-background: var(--dark-code-background);
|
|
72
|
-
} }
|
|
73
|
-
|
|
74
|
-
:root[data-theme='light'] {
|
|
75
|
-
--hl-0: var(--light-hl-0);
|
|
76
|
-
--hl-1: var(--light-hl-1);
|
|
77
|
-
--hl-2: var(--light-hl-2);
|
|
78
|
-
--hl-3: var(--light-hl-3);
|
|
79
|
-
--hl-4: var(--light-hl-4);
|
|
80
|
-
--hl-5: var(--light-hl-5);
|
|
81
|
-
--hl-6: var(--light-hl-6);
|
|
82
|
-
--hl-7: var(--light-hl-7);
|
|
83
|
-
--hl-8: var(--light-hl-8);
|
|
84
|
-
--hl-9: var(--light-hl-9);
|
|
85
|
-
--hl-10: var(--light-hl-10);
|
|
86
|
-
--hl-11: var(--light-hl-11);
|
|
87
|
-
--hl-12: var(--light-hl-12);
|
|
88
|
-
--hl-13: var(--light-hl-13);
|
|
89
|
-
--hl-14: var(--light-hl-14);
|
|
90
|
-
--code-background: var(--light-code-background);
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
:root[data-theme='dark'] {
|
|
94
|
-
--hl-0: var(--dark-hl-0);
|
|
95
|
-
--hl-1: var(--dark-hl-1);
|
|
96
|
-
--hl-2: var(--dark-hl-2);
|
|
97
|
-
--hl-3: var(--dark-hl-3);
|
|
98
|
-
--hl-4: var(--dark-hl-4);
|
|
99
|
-
--hl-5: var(--dark-hl-5);
|
|
100
|
-
--hl-6: var(--dark-hl-6);
|
|
101
|
-
--hl-7: var(--dark-hl-7);
|
|
102
|
-
--hl-8: var(--dark-hl-8);
|
|
103
|
-
--hl-9: var(--dark-hl-9);
|
|
104
|
-
--hl-10: var(--dark-hl-10);
|
|
105
|
-
--hl-11: var(--dark-hl-11);
|
|
106
|
-
--hl-12: var(--dark-hl-12);
|
|
107
|
-
--hl-13: var(--dark-hl-13);
|
|
108
|
-
--hl-14: var(--dark-hl-14);
|
|
109
|
-
--code-background: var(--dark-code-background);
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
.hl-0 { color: var(--hl-0); }
|
|
113
|
-
.hl-1 { color: var(--hl-1); }
|
|
114
|
-
.hl-2 { color: var(--hl-2); }
|
|
115
|
-
.hl-3 { color: var(--hl-3); }
|
|
116
|
-
.hl-4 { color: var(--hl-4); }
|
|
117
|
-
.hl-5 { color: var(--hl-5); }
|
|
118
|
-
.hl-6 { color: var(--hl-6); }
|
|
119
|
-
.hl-7 { color: var(--hl-7); }
|
|
120
|
-
.hl-8 { color: var(--hl-8); }
|
|
121
|
-
.hl-9 { color: var(--hl-9); }
|
|
122
|
-
.hl-10 { color: var(--hl-10); }
|
|
123
|
-
.hl-11 { color: var(--hl-11); }
|
|
124
|
-
.hl-12 { color: var(--hl-12); }
|
|
125
|
-
.hl-13 { color: var(--hl-13); }
|
|
126
|
-
.hl-14 { color: var(--hl-14); }
|
|
127
|
-
pre, code { background: var(--code-background); }
|