@lingui/detect-locale 3.17.0 → 3.17.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,22 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [3.17.2](https://github.com/lingui/js-lingui/compare/v3.17.1...v3.17.2) (2023-02-24)
7
+
8
+ **Note:** Version bump only for package @lingui/detect-locale
9
+
10
+
11
+
12
+
13
+
14
+ ## [3.17.1](https://github.com/lingui/js-lingui/compare/v3.17.0...v3.17.1) (2023-02-07)
15
+
16
+ **Note:** Version bump only for package @lingui/detect-locale
17
+
18
+
19
+
20
+
21
+
6
22
  # [3.17.0](https://github.com/lingui/js-lingui/compare/v3.16.1...v3.17.0) (2023-02-01)
7
23
 
8
24
  **Note:** Version bump only for package @lingui/detect-locale
@@ -3,31 +3,26 @@
3
3
  function getCookie(key) {
4
4
  if (!key) {
5
5
  return;
6
- } // To prevent the for loop in the first place assign an empty array
7
- // in case there are no cookies at all.
8
-
9
-
10
- var cookies = globalThis.document.cookie ? globalThis.document.cookie.split('; ') : [];
11
- var jar = {};
12
-
13
- for (var i = 0; i < cookies.length; i++) {
14
- var parts = cookies[i].split('=');
15
- var value = parts.slice(1).join('=');
6
+ }
16
7
 
8
+ // To prevent the for loop in the first place assign an empty array
9
+ // in case there are no cookies at all.
10
+ const cookies = globalThis.document.cookie ? globalThis.document.cookie.split("; ") : [];
11
+ const jar = {};
12
+ for (let i = 0; i < cookies.length; i++) {
13
+ const parts = cookies[i].split("=");
14
+ let value = parts.slice(1).join("=");
17
15
  if (value[0] === '"') {
18
16
  value = value.slice(1, -1);
19
17
  }
20
-
21
18
  try {
22
- var foundKey = parts[0].replace(/(%[\dA-F]{2})+/gi, decodeURIComponent);
19
+ const foundKey = parts[0].replace(/(%[\dA-F]{2})+/gi, decodeURIComponent);
23
20
  jar[foundKey] = value.replace(/(%[\dA-F]{2})+/gi, decodeURIComponent);
24
-
25
21
  if (key === foundKey) {
26
22
  break;
27
23
  }
28
24
  } catch (e) {}
29
25
  }
30
-
31
26
  return key ? jar[key] : jar;
32
27
  }
33
28
 
@@ -36,52 +31,44 @@ function detectFromCookie(key) {
36
31
  }
37
32
 
38
33
  function detectFromPath(localePathIndex) {
39
- var location = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalThis.location;
40
- var locale = location.pathname.match(/\/([a-zA-Z-]*)/g);
41
-
34
+ let location = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalThis.location;
35
+ const locale = location.pathname.match(/\/([a-zA-Z-]*)/g);
42
36
  if (Array.isArray(locale)) {
43
37
  return locale[localePathIndex].replace("/", "");
44
38
  }
45
-
46
39
  return null;
47
40
  }
48
41
 
49
42
  function detectFromStorage(key) {
50
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
43
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
51
44
  useSessionStorage: false
52
45
  };
53
-
54
46
  if (options.useSessionStorage) {
55
47
  return globalThis.sessionStorage.getItem(key);
56
48
  }
57
-
58
49
  return globalThis.localStorage.getItem(key);
59
50
  }
60
51
 
61
52
  function detectFromNavigator() {
62
- var navigator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : globalThis.navigator;
63
- var result = navigator.language || navigator.userLanguage;
53
+ let navigator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : globalThis.navigator;
54
+ const result = navigator.language || navigator.userLanguage;
64
55
  return result;
65
56
  }
66
57
 
67
58
  function detectFromSubdomain(localeSubdomainIndex) {
68
- var location = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalThis.location;
69
- var locale = location.href.match(/(?:http[s]*\:\/\/)*(.*?)\.(?=[^\/]*\..{2,5})/gi);
70
-
59
+ let location = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalThis.location;
60
+ const locale = location.href.match(/(?:http[s]*\:\/\/)*(.*?)\.(?=[^\/]*\..{2,5})/gi);
71
61
  if (Array.isArray(locale)) {
72
- return locale[localeSubdomainIndex].replace('http://', '').replace('https://', '').replace('.', '');
62
+ return locale[localeSubdomainIndex].replace("http://", "").replace("https://", "").replace(".", "");
73
63
  }
74
-
75
64
  return null;
76
65
  }
77
66
 
78
67
  function detectHtmlTag(htmlTagIdentifier) {
79
- var document = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalThis.document;
80
-
68
+ let document = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalThis.document;
81
69
  if (htmlTagIdentifier) {
82
70
  return document.documentElement.getAttribute(htmlTagIdentifier);
83
71
  }
84
-
85
72
  return null;
86
73
  }
87
74
 
@@ -92,13 +79,14 @@ function detectHtmlTag(htmlTagIdentifier) {
92
79
  * @returns {Object}
93
80
  */
94
81
  function parse(query) {
95
- var parser = /([^=?#&]+)=?([^&]*)/g;
96
- var result = {};
97
- var part;
98
-
82
+ const parser = /([^=?#&]+)=?([^&]*)/g;
83
+ const result = {};
84
+ let part;
99
85
  while (part = parser.exec(query)) {
100
- var key = decode(part[1]);
101
- var value = decode(part[2]); //
86
+ const key = decode(part[1]);
87
+ const value = decode(part[2]);
88
+
89
+ //
102
90
  // Prevent overriding of existing properties. This ensures that build-in
103
91
  // methods like `toString` or __proto__ are not overriden by malicious
104
92
  // querystrings.
@@ -106,26 +94,23 @@ function parse(query) {
106
94
  // In the case if failed decoding, we want to omit the key/value pairs
107
95
  // from the result.
108
96
  //
109
-
110
97
  if (key === null || value === null || key in result) continue;
111
98
  result[key] = value;
112
99
  }
113
-
114
100
  return result;
115
101
  }
116
-
117
102
  function decode(input) {
118
103
  try {
119
- return decodeURIComponent(input.replace(/\+/g, ' '));
104
+ return decodeURIComponent(input.replace(/\+/g, " "));
120
105
  } catch (e) {
121
106
  return null;
122
107
  }
123
108
  }
124
109
 
125
110
  function detectFromUrl(parameter) {
126
- var location = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalThis.location;
111
+ let location = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalThis.location;
127
112
  if (!parameter) throw new Error("fromUrl parameter is required");
128
- var result = parse(location.search)[parameter] || null;
113
+ const result = parse(location.search)[parameter] || null;
129
114
  return result;
130
115
  }
131
116
 
@@ -133,27 +118,21 @@ function detect() {
133
118
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
134
119
  args[_key] = arguments[_key];
135
120
  }
136
-
137
- for (var i = 0; i < args.length; i++) {
138
- var res = typeof args[i] === "function" ? args[i]() : args[i];
121
+ for (let i = 0; i < args.length; i++) {
122
+ const res = typeof args[i] === "function" ? args[i]() : args[i];
139
123
  if (res) return res;
140
124
  }
141
-
142
125
  return null;
143
126
  }
144
-
145
127
  function multipleDetect() {
146
- var locales = [];
147
-
128
+ const locales = [];
148
129
  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
149
130
  args[_key2] = arguments[_key2];
150
131
  }
151
-
152
- for (var i = 0; i < args.length; i++) {
153
- var res = typeof args[i] === "function" ? args[i]() : args[i];
132
+ for (let i = 0; i < args.length; i++) {
133
+ const res = typeof args[i] === "function" ? args[i]() : args[i];
154
134
  if (res) locales.push(res);
155
135
  }
156
-
157
136
  return locales;
158
137
  }
159
138
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/utils/cookie-getter.ts","../../src/detectors/fromCookie.ts","../../src/detectors/fromPath.ts","../../src/detectors/fromStorage.ts","../../src/detectors/fromNavigator.ts","../../src/detectors/fromSubdomain.ts","../../src/detectors/fromHtmlTag.ts","../../src/utils/query-string.ts","../../src/detectors/fromUrl.ts","../../src/index.ts"],"sourcesContent":["export function getCookie(key: string): string {\n if (!key) {\n return;\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n const cookies = globalThis.document.cookie ? globalThis.document.cookie.split('; ') : []\n const jar = {}\n for (let i = 0; i < cookies.length; i++) {\n const parts = cookies[i].split('=')\n let value = parts.slice(1).join('=')\n\n if (value[0] === '\"') {\n value = value.slice(1, -1)\n }\n\n try {\n const foundKey = parts[0].replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n jar[foundKey] = value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n\n if (key === foundKey) {\n break\n }\n } catch (e) {}\n }\n\n return key ? jar[key] : jar\n}","import { LocaleString } from \"..\"\nimport { getCookie } from \"../utils/cookie-getter\"\n\nexport default function detectFromCookie(\n key: string\n): LocaleString {\n return getCookie(key)\n}","import { LocaleString } from \"../\"\n\nexport default function detectFromPath(\n localePathIndex: number,\n location: Partial<Location> = globalThis.location,\n): LocaleString {\n const locale: RegExpMatchArray = location.pathname.match(/\\/([a-zA-Z-]*)/g)\n if (Array.isArray(locale)) {\n return locale[localePathIndex].replace(\"/\", \"\")\n }\n\n return null\n}","import { LocaleString } from \"..\"\n\nexport default function detectFromStorage(\n key: string,\n options: { useSessionStorage: boolean } = { useSessionStorage: false }\n): LocaleString {\n if (options.useSessionStorage) {\n return globalThis.sessionStorage.getItem(key);\n }\n\n return globalThis.localStorage.getItem(key);\n}","import { LocaleString } from \"..\"\n\ntype IE11NavigatorLanguage = {\n userLanguage?: string\n}\n\nexport default function detectFromNavigator(\n navigator: Partial<Navigator & IE11NavigatorLanguage> = globalThis.navigator\n): LocaleString {\n\n const result: LocaleString = navigator.language || navigator.userLanguage\n return result\n}","import { LocaleString } from \"../\"\n\nexport default function detectFromSubdomain(\n localeSubdomainIndex: number,\n location: Partial<Location> = globalThis.location,\n): LocaleString {\n const locale: RegExpMatchArray = location.href.match(/(?:http[s]*\\:\\/\\/)*(.*?)\\.(?=[^\\/]*\\..{2,5})/gi)\n if (Array.isArray(locale)) {\n return locale[localeSubdomainIndex]\n .replace('http://', '')\n .replace('https://', '')\n .replace('.', '')\n }\n\n return null\n}","import { LocaleString } from \"..\"\n\nexport default function detectHtmlTag(\n htmlTagIdentifier: string,\n document: Partial<Document> = globalThis.document\n): LocaleString {\n if (htmlTagIdentifier) {\n return document.documentElement.getAttribute(htmlTagIdentifier)\n }\n\n return null\n}","\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n */\nexport function parse(query) {\n const parser = /([^=?#&]+)=?([^&]*)/g;\n const result = {};\n let part;\n\n while (part = parser.exec(query)) {\n const key = decode(part[1]);\n const value = decode(part[2]);\n\n //\n // Prevent overriding of existing properties. This ensures that build-in\n // methods like `toString` or __proto__ are not overriden by malicious\n // querystrings.\n //\n // In the case if failed decoding, we want to omit the key/value pairs\n // from the result.\n //\n if (key === null || value === null || key in result) continue;\n result[key] = value;\n }\n\n return result;\n}\n\nfunction decode(input) {\n try {\n return decodeURIComponent(input.replace(/\\+/g, ' '));\n } catch (e) {\n return null;\n }\n}\nfunction encode(input) {\n try {\n return encodeURIComponent(input);\n } catch (e) {\n return null;\n }\n}\n","import { parse } from \"../utils/query-string\";\nimport { LocaleString } from \"..\";\n\nexport default function detectFromUrl(\n parameter: string,\n location: Partial<Location> = globalThis.location\n): LocaleString {\n if (!parameter) throw new Error(\"fromUrl parameter is required\");\n\n const result: LocaleString = parse(location.search)[parameter] || null\n return result\n}","import \"./utils/globalThis.polyfill.js\"\nimport fromCookie from \"./detectors/fromCookie\"\nimport fromPath from \"./detectors/fromPath\"\nimport fromStorage from \"./detectors/fromStorage\"\nimport fromNavigator from \"./detectors/fromNavigator\"\nimport fromSubdomain from \"./detectors/fromSubdomain\"\nimport fromHtmlTag from \"./detectors/fromHtmlTag\"\nimport fromUrl from \"./detectors/fromUrl\"\n\nexport type LocaleString = string\nexport type DetectParamsFunctions = string\n\nfunction detect(...args): LocaleString | null {\n for (let i = 0; i < args.length; i++) {\n const res: LocaleString = typeof args[i] === \"function\" ? args[i]() : args[i]\n if (res) return res\n }\n\n return null\n}\n\nfunction multipleDetect(...args): LocaleString[] {\n const locales = []\n for (let i = 0; i < args.length; i++) {\n const res: LocaleString = typeof args[i] === \"function\" ? args[i]() : args[i]\n if (res) locales.push(res)\n }\n\n return locales\n}\n\nexport {\n detect,\n multipleDetect,\n fromCookie,\n fromHtmlTag,\n fromNavigator,\n fromPath,\n fromStorage,\n fromSubdomain,\n fromUrl,\n}\n"],"names":["getCookie","key","cookies","globalThis","document","cookie","split","jar","i","length","parts","value","slice","join","foundKey","replace","decodeURIComponent","e","detectFromCookie","detectFromPath","localePathIndex","location","locale","pathname","match","Array","isArray","detectFromStorage","options","useSessionStorage","sessionStorage","getItem","localStorage","detectFromNavigator","navigator","result","language","userLanguage","detectFromSubdomain","localeSubdomainIndex","href","detectHtmlTag","htmlTagIdentifier","documentElement","getAttribute","parse","query","parser","part","exec","decode","input","detectFromUrl","parameter","Error","search","detect","args","res","multipleDetect","locales","push"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/utils/cookie-getter.ts","../../src/detectors/fromCookie.ts","../../src/detectors/fromPath.ts","../../src/detectors/fromStorage.ts","../../src/detectors/fromNavigator.ts","../../src/detectors/fromSubdomain.ts","../../src/detectors/fromHtmlTag.ts","../../src/utils/query-string.ts","../../src/detectors/fromUrl.ts","../../src/index.ts"],"sourcesContent":["export function getCookie(key: string): string {\n if (!key) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n const cookies = globalThis.document.cookie\n ? globalThis.document.cookie.split(\"; \")\n : []\n const jar = {}\n for (let i = 0; i < cookies.length; i++) {\n const parts = cookies[i].split(\"=\")\n let value = parts.slice(1).join(\"=\")\n\n if (value[0] === '\"') {\n value = value.slice(1, -1)\n }\n\n try {\n const foundKey = parts[0].replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n jar[foundKey] = value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n\n if (key === foundKey) {\n break\n }\n } catch (e) {}\n }\n\n return key ? jar[key] : jar\n}\n","import { LocaleString } from \"..\"\nimport { getCookie } from \"../utils/cookie-getter\"\n\nexport default function detectFromCookie(key: string): LocaleString {\n return getCookie(key)\n}\n","import { LocaleString } from \"../\"\n\nexport default function detectFromPath(\n localePathIndex: number,\n location: Partial<Location> = globalThis.location\n): LocaleString {\n const locale: RegExpMatchArray = location.pathname.match(/\\/([a-zA-Z-]*)/g)\n if (Array.isArray(locale)) {\n return locale[localePathIndex].replace(\"/\", \"\")\n }\n\n return null\n}\n","import { LocaleString } from \"..\"\n\nexport default function detectFromStorage(\n key: string,\n options: { useSessionStorage: boolean } = { useSessionStorage: false }\n): LocaleString {\n if (options.useSessionStorage) {\n return globalThis.sessionStorage.getItem(key)\n }\n\n return globalThis.localStorage.getItem(key)\n}\n","import { LocaleString } from \"..\"\n\ntype IE11NavigatorLanguage = {\n userLanguage?: string\n}\n\nexport default function detectFromNavigator(\n navigator: Partial<Navigator & IE11NavigatorLanguage> = globalThis.navigator\n): LocaleString {\n const result: LocaleString = navigator.language || navigator.userLanguage\n return result\n}\n","import { LocaleString } from \"../\"\n\nexport default function detectFromSubdomain(\n localeSubdomainIndex: number,\n location: Partial<Location> = globalThis.location\n): LocaleString {\n const locale: RegExpMatchArray = location.href.match(\n /(?:http[s]*\\:\\/\\/)*(.*?)\\.(?=[^\\/]*\\..{2,5})/gi\n )\n if (Array.isArray(locale)) {\n return locale[localeSubdomainIndex]\n .replace(\"http://\", \"\")\n .replace(\"https://\", \"\")\n .replace(\".\", \"\")\n }\n\n return null\n}\n","import { LocaleString } from \"..\"\n\nexport default function detectHtmlTag(\n htmlTagIdentifier: string,\n document: Partial<Document> = globalThis.document\n): LocaleString {\n if (htmlTagIdentifier) {\n return document.documentElement.getAttribute(htmlTagIdentifier)\n }\n\n return null\n}\n","/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n */\nexport function parse(query) {\n const parser = /([^=?#&]+)=?([^&]*)/g\n const result = {}\n let part\n\n while ((part = parser.exec(query))) {\n const key = decode(part[1])\n const value = decode(part[2])\n\n //\n // Prevent overriding of existing properties. This ensures that build-in\n // methods like `toString` or __proto__ are not overriden by malicious\n // querystrings.\n //\n // In the case if failed decoding, we want to omit the key/value pairs\n // from the result.\n //\n if (key === null || value === null || key in result) continue\n result[key] = value\n }\n\n return result\n}\n\nfunction decode(input) {\n try {\n return decodeURIComponent(input.replace(/\\+/g, \" \"))\n } catch (e) {\n return null\n }\n}\n","import { parse } from \"../utils/query-string\"\nimport { LocaleString } from \"..\"\n\nexport default function detectFromUrl(\n parameter: string,\n location: Partial<Location> = globalThis.location\n): LocaleString {\n if (!parameter) throw new Error(\"fromUrl parameter is required\")\n\n const result: LocaleString = parse(location.search)[parameter] || null\n return result\n}\n","import \"./utils/globalThis.polyfill.js\"\nimport fromCookie from \"./detectors/fromCookie\"\nimport fromPath from \"./detectors/fromPath\"\nimport fromStorage from \"./detectors/fromStorage\"\nimport fromNavigator from \"./detectors/fromNavigator\"\nimport fromSubdomain from \"./detectors/fromSubdomain\"\nimport fromHtmlTag from \"./detectors/fromHtmlTag\"\nimport fromUrl from \"./detectors/fromUrl\"\n\nexport type LocaleString = string\nexport type DetectParamsFunctions = string\n\nfunction detect(...args): LocaleString | null {\n for (let i = 0; i < args.length; i++) {\n const res: LocaleString =\n typeof args[i] === \"function\" ? args[i]() : args[i]\n if (res) return res\n }\n\n return null\n}\n\nfunction multipleDetect(...args): LocaleString[] {\n const locales = []\n for (let i = 0; i < args.length; i++) {\n const res: LocaleString =\n typeof args[i] === \"function\" ? args[i]() : args[i]\n if (res) locales.push(res)\n }\n\n return locales\n}\n\nexport {\n detect,\n multipleDetect,\n fromCookie,\n fromHtmlTag,\n fromNavigator,\n fromPath,\n fromStorage,\n fromSubdomain,\n fromUrl,\n}\n"],"names":["getCookie","key","cookies","globalThis","document","cookie","split","jar","i","length","parts","value","slice","join","foundKey","replace","decodeURIComponent","e","detectFromCookie","detectFromPath","localePathIndex","location","locale","pathname","match","Array","isArray","detectFromStorage","options","useSessionStorage","sessionStorage","getItem","localStorage","detectFromNavigator","navigator","result","language","userLanguage","detectFromSubdomain","localeSubdomainIndex","href","detectHtmlTag","htmlTagIdentifier","documentElement","getAttribute","parse","query","parser","part","exec","decode","input","detectFromUrl","parameter","Error","search","detect","args","res","multipleDetect","locales","push"],"mappings":"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"}
@@ -1,31 +1,26 @@
1
1
  function getCookie(key) {
2
2
  if (!key) {
3
3
  return;
4
- } // To prevent the for loop in the first place assign an empty array
5
- // in case there are no cookies at all.
6
-
7
-
8
- var cookies = globalThis.document.cookie ? globalThis.document.cookie.split('; ') : [];
9
- var jar = {};
10
-
11
- for (var i = 0; i < cookies.length; i++) {
12
- var parts = cookies[i].split('=');
13
- var value = parts.slice(1).join('=');
4
+ }
14
5
 
6
+ // To prevent the for loop in the first place assign an empty array
7
+ // in case there are no cookies at all.
8
+ const cookies = globalThis.document.cookie ? globalThis.document.cookie.split("; ") : [];
9
+ const jar = {};
10
+ for (let i = 0; i < cookies.length; i++) {
11
+ const parts = cookies[i].split("=");
12
+ let value = parts.slice(1).join("=");
15
13
  if (value[0] === '"') {
16
14
  value = value.slice(1, -1);
17
15
  }
18
-
19
16
  try {
20
- var foundKey = parts[0].replace(/(%[\dA-F]{2})+/gi, decodeURIComponent);
17
+ const foundKey = parts[0].replace(/(%[\dA-F]{2})+/gi, decodeURIComponent);
21
18
  jar[foundKey] = value.replace(/(%[\dA-F]{2})+/gi, decodeURIComponent);
22
-
23
19
  if (key === foundKey) {
24
20
  break;
25
21
  }
26
22
  } catch (e) {}
27
23
  }
28
-
29
24
  return key ? jar[key] : jar;
30
25
  }
31
26
 
@@ -34,52 +29,44 @@ function detectFromCookie(key) {
34
29
  }
35
30
 
36
31
  function detectFromPath(localePathIndex) {
37
- var location = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalThis.location;
38
- var locale = location.pathname.match(/\/([a-zA-Z-]*)/g);
39
-
32
+ let location = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalThis.location;
33
+ const locale = location.pathname.match(/\/([a-zA-Z-]*)/g);
40
34
  if (Array.isArray(locale)) {
41
35
  return locale[localePathIndex].replace("/", "");
42
36
  }
43
-
44
37
  return null;
45
38
  }
46
39
 
47
40
  function detectFromStorage(key) {
48
- var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
41
+ let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
49
42
  useSessionStorage: false
50
43
  };
51
-
52
44
  if (options.useSessionStorage) {
53
45
  return globalThis.sessionStorage.getItem(key);
54
46
  }
55
-
56
47
  return globalThis.localStorage.getItem(key);
57
48
  }
58
49
 
59
50
  function detectFromNavigator() {
60
- var navigator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : globalThis.navigator;
61
- var result = navigator.language || navigator.userLanguage;
51
+ let navigator = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : globalThis.navigator;
52
+ const result = navigator.language || navigator.userLanguage;
62
53
  return result;
63
54
  }
64
55
 
65
56
  function detectFromSubdomain(localeSubdomainIndex) {
66
- var location = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalThis.location;
67
- var locale = location.href.match(/(?:http[s]*\:\/\/)*(.*?)\.(?=[^\/]*\..{2,5})/gi);
68
-
57
+ let location = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalThis.location;
58
+ const locale = location.href.match(/(?:http[s]*\:\/\/)*(.*?)\.(?=[^\/]*\..{2,5})/gi);
69
59
  if (Array.isArray(locale)) {
70
- return locale[localeSubdomainIndex].replace('http://', '').replace('https://', '').replace('.', '');
60
+ return locale[localeSubdomainIndex].replace("http://", "").replace("https://", "").replace(".", "");
71
61
  }
72
-
73
62
  return null;
74
63
  }
75
64
 
76
65
  function detectHtmlTag(htmlTagIdentifier) {
77
- var document = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalThis.document;
78
-
66
+ let document = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalThis.document;
79
67
  if (htmlTagIdentifier) {
80
68
  return document.documentElement.getAttribute(htmlTagIdentifier);
81
69
  }
82
-
83
70
  return null;
84
71
  }
85
72
 
@@ -90,13 +77,14 @@ function detectHtmlTag(htmlTagIdentifier) {
90
77
  * @returns {Object}
91
78
  */
92
79
  function parse(query) {
93
- var parser = /([^=?#&]+)=?([^&]*)/g;
94
- var result = {};
95
- var part;
96
-
80
+ const parser = /([^=?#&]+)=?([^&]*)/g;
81
+ const result = {};
82
+ let part;
97
83
  while (part = parser.exec(query)) {
98
- var key = decode(part[1]);
99
- var value = decode(part[2]); //
84
+ const key = decode(part[1]);
85
+ const value = decode(part[2]);
86
+
87
+ //
100
88
  // Prevent overriding of existing properties. This ensures that build-in
101
89
  // methods like `toString` or __proto__ are not overriden by malicious
102
90
  // querystrings.
@@ -104,26 +92,23 @@ function parse(query) {
104
92
  // In the case if failed decoding, we want to omit the key/value pairs
105
93
  // from the result.
106
94
  //
107
-
108
95
  if (key === null || value === null || key in result) continue;
109
96
  result[key] = value;
110
97
  }
111
-
112
98
  return result;
113
99
  }
114
-
115
100
  function decode(input) {
116
101
  try {
117
- return decodeURIComponent(input.replace(/\+/g, ' '));
102
+ return decodeURIComponent(input.replace(/\+/g, " "));
118
103
  } catch (e) {
119
104
  return null;
120
105
  }
121
106
  }
122
107
 
123
108
  function detectFromUrl(parameter) {
124
- var location = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalThis.location;
109
+ let location = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : globalThis.location;
125
110
  if (!parameter) throw new Error("fromUrl parameter is required");
126
- var result = parse(location.search)[parameter] || null;
111
+ const result = parse(location.search)[parameter] || null;
127
112
  return result;
128
113
  }
129
114
 
@@ -131,27 +116,21 @@ function detect() {
131
116
  for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
132
117
  args[_key] = arguments[_key];
133
118
  }
134
-
135
- for (var i = 0; i < args.length; i++) {
136
- var res = typeof args[i] === "function" ? args[i]() : args[i];
119
+ for (let i = 0; i < args.length; i++) {
120
+ const res = typeof args[i] === "function" ? args[i]() : args[i];
137
121
  if (res) return res;
138
122
  }
139
-
140
123
  return null;
141
124
  }
142
-
143
125
  function multipleDetect() {
144
- var locales = [];
145
-
126
+ const locales = [];
146
127
  for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
147
128
  args[_key2] = arguments[_key2];
148
129
  }
149
-
150
- for (var i = 0; i < args.length; i++) {
151
- var res = typeof args[i] === "function" ? args[i]() : args[i];
130
+ for (let i = 0; i < args.length; i++) {
131
+ const res = typeof args[i] === "function" ? args[i]() : args[i];
152
132
  if (res) locales.push(res);
153
133
  }
154
-
155
134
  return locales;
156
135
  }
157
136
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../src/utils/cookie-getter.ts","../../src/detectors/fromCookie.ts","../../src/detectors/fromPath.ts","../../src/detectors/fromStorage.ts","../../src/detectors/fromNavigator.ts","../../src/detectors/fromSubdomain.ts","../../src/detectors/fromHtmlTag.ts","../../src/utils/query-string.ts","../../src/detectors/fromUrl.ts","../../src/index.ts"],"sourcesContent":["export function getCookie(key: string): string {\n if (!key) {\n return;\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n const cookies = globalThis.document.cookie ? globalThis.document.cookie.split('; ') : []\n const jar = {}\n for (let i = 0; i < cookies.length; i++) {\n const parts = cookies[i].split('=')\n let value = parts.slice(1).join('=')\n\n if (value[0] === '\"') {\n value = value.slice(1, -1)\n }\n\n try {\n const foundKey = parts[0].replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n jar[foundKey] = value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n\n if (key === foundKey) {\n break\n }\n } catch (e) {}\n }\n\n return key ? jar[key] : jar\n}","import { LocaleString } from \"..\"\nimport { getCookie } from \"../utils/cookie-getter\"\n\nexport default function detectFromCookie(\n key: string\n): LocaleString {\n return getCookie(key)\n}","import { LocaleString } from \"../\"\n\nexport default function detectFromPath(\n localePathIndex: number,\n location: Partial<Location> = globalThis.location,\n): LocaleString {\n const locale: RegExpMatchArray = location.pathname.match(/\\/([a-zA-Z-]*)/g)\n if (Array.isArray(locale)) {\n return locale[localePathIndex].replace(\"/\", \"\")\n }\n\n return null\n}","import { LocaleString } from \"..\"\n\nexport default function detectFromStorage(\n key: string,\n options: { useSessionStorage: boolean } = { useSessionStorage: false }\n): LocaleString {\n if (options.useSessionStorage) {\n return globalThis.sessionStorage.getItem(key);\n }\n\n return globalThis.localStorage.getItem(key);\n}","import { LocaleString } from \"..\"\n\ntype IE11NavigatorLanguage = {\n userLanguage?: string\n}\n\nexport default function detectFromNavigator(\n navigator: Partial<Navigator & IE11NavigatorLanguage> = globalThis.navigator\n): LocaleString {\n\n const result: LocaleString = navigator.language || navigator.userLanguage\n return result\n}","import { LocaleString } from \"../\"\n\nexport default function detectFromSubdomain(\n localeSubdomainIndex: number,\n location: Partial<Location> = globalThis.location,\n): LocaleString {\n const locale: RegExpMatchArray = location.href.match(/(?:http[s]*\\:\\/\\/)*(.*?)\\.(?=[^\\/]*\\..{2,5})/gi)\n if (Array.isArray(locale)) {\n return locale[localeSubdomainIndex]\n .replace('http://', '')\n .replace('https://', '')\n .replace('.', '')\n }\n\n return null\n}","import { LocaleString } from \"..\"\n\nexport default function detectHtmlTag(\n htmlTagIdentifier: string,\n document: Partial<Document> = globalThis.document\n): LocaleString {\n if (htmlTagIdentifier) {\n return document.documentElement.getAttribute(htmlTagIdentifier)\n }\n\n return null\n}","\n/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n */\nexport function parse(query) {\n const parser = /([^=?#&]+)=?([^&]*)/g;\n const result = {};\n let part;\n\n while (part = parser.exec(query)) {\n const key = decode(part[1]);\n const value = decode(part[2]);\n\n //\n // Prevent overriding of existing properties. This ensures that build-in\n // methods like `toString` or __proto__ are not overriden by malicious\n // querystrings.\n //\n // In the case if failed decoding, we want to omit the key/value pairs\n // from the result.\n //\n if (key === null || value === null || key in result) continue;\n result[key] = value;\n }\n\n return result;\n}\n\nfunction decode(input) {\n try {\n return decodeURIComponent(input.replace(/\\+/g, ' '));\n } catch (e) {\n return null;\n }\n}\nfunction encode(input) {\n try {\n return encodeURIComponent(input);\n } catch (e) {\n return null;\n }\n}\n","import { parse } from \"../utils/query-string\";\nimport { LocaleString } from \"..\";\n\nexport default function detectFromUrl(\n parameter: string,\n location: Partial<Location> = globalThis.location\n): LocaleString {\n if (!parameter) throw new Error(\"fromUrl parameter is required\");\n\n const result: LocaleString = parse(location.search)[parameter] || null\n return result\n}","import \"./utils/globalThis.polyfill.js\"\nimport fromCookie from \"./detectors/fromCookie\"\nimport fromPath from \"./detectors/fromPath\"\nimport fromStorage from \"./detectors/fromStorage\"\nimport fromNavigator from \"./detectors/fromNavigator\"\nimport fromSubdomain from \"./detectors/fromSubdomain\"\nimport fromHtmlTag from \"./detectors/fromHtmlTag\"\nimport fromUrl from \"./detectors/fromUrl\"\n\nexport type LocaleString = string\nexport type DetectParamsFunctions = string\n\nfunction detect(...args): LocaleString | null {\n for (let i = 0; i < args.length; i++) {\n const res: LocaleString = typeof args[i] === \"function\" ? args[i]() : args[i]\n if (res) return res\n }\n\n return null\n}\n\nfunction multipleDetect(...args): LocaleString[] {\n const locales = []\n for (let i = 0; i < args.length; i++) {\n const res: LocaleString = typeof args[i] === \"function\" ? args[i]() : args[i]\n if (res) locales.push(res)\n }\n\n return locales\n}\n\nexport {\n detect,\n multipleDetect,\n fromCookie,\n fromHtmlTag,\n fromNavigator,\n fromPath,\n fromStorage,\n fromSubdomain,\n fromUrl,\n}\n"],"names":["getCookie","key","cookies","globalThis","document","cookie","split","jar","i","length","parts","value","slice","join","foundKey","replace","decodeURIComponent","e","detectFromCookie","detectFromPath","localePathIndex","location","locale","pathname","match","Array","isArray","detectFromStorage","options","useSessionStorage","sessionStorage","getItem","localStorage","detectFromNavigator","navigator","result","language","userLanguage","detectFromSubdomain","localeSubdomainIndex","href","detectHtmlTag","htmlTagIdentifier","documentElement","getAttribute","parse","query","parser","part","exec","decode","input","detectFromUrl","parameter","Error","search","detect","args","res","multipleDetect","locales","push"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../src/utils/cookie-getter.ts","../../src/detectors/fromCookie.ts","../../src/detectors/fromPath.ts","../../src/detectors/fromStorage.ts","../../src/detectors/fromNavigator.ts","../../src/detectors/fromSubdomain.ts","../../src/detectors/fromHtmlTag.ts","../../src/utils/query-string.ts","../../src/detectors/fromUrl.ts","../../src/index.ts"],"sourcesContent":["export function getCookie(key: string): string {\n if (!key) {\n return\n }\n\n // To prevent the for loop in the first place assign an empty array\n // in case there are no cookies at all.\n const cookies = globalThis.document.cookie\n ? globalThis.document.cookie.split(\"; \")\n : []\n const jar = {}\n for (let i = 0; i < cookies.length; i++) {\n const parts = cookies[i].split(\"=\")\n let value = parts.slice(1).join(\"=\")\n\n if (value[0] === '\"') {\n value = value.slice(1, -1)\n }\n\n try {\n const foundKey = parts[0].replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n jar[foundKey] = value.replace(/(%[\\dA-F]{2})+/gi, decodeURIComponent)\n\n if (key === foundKey) {\n break\n }\n } catch (e) {}\n }\n\n return key ? jar[key] : jar\n}\n","import { LocaleString } from \"..\"\nimport { getCookie } from \"../utils/cookie-getter\"\n\nexport default function detectFromCookie(key: string): LocaleString {\n return getCookie(key)\n}\n","import { LocaleString } from \"../\"\n\nexport default function detectFromPath(\n localePathIndex: number,\n location: Partial<Location> = globalThis.location\n): LocaleString {\n const locale: RegExpMatchArray = location.pathname.match(/\\/([a-zA-Z-]*)/g)\n if (Array.isArray(locale)) {\n return locale[localePathIndex].replace(\"/\", \"\")\n }\n\n return null\n}\n","import { LocaleString } from \"..\"\n\nexport default function detectFromStorage(\n key: string,\n options: { useSessionStorage: boolean } = { useSessionStorage: false }\n): LocaleString {\n if (options.useSessionStorage) {\n return globalThis.sessionStorage.getItem(key)\n }\n\n return globalThis.localStorage.getItem(key)\n}\n","import { LocaleString } from \"..\"\n\ntype IE11NavigatorLanguage = {\n userLanguage?: string\n}\n\nexport default function detectFromNavigator(\n navigator: Partial<Navigator & IE11NavigatorLanguage> = globalThis.navigator\n): LocaleString {\n const result: LocaleString = navigator.language || navigator.userLanguage\n return result\n}\n","import { LocaleString } from \"../\"\n\nexport default function detectFromSubdomain(\n localeSubdomainIndex: number,\n location: Partial<Location> = globalThis.location\n): LocaleString {\n const locale: RegExpMatchArray = location.href.match(\n /(?:http[s]*\\:\\/\\/)*(.*?)\\.(?=[^\\/]*\\..{2,5})/gi\n )\n if (Array.isArray(locale)) {\n return locale[localeSubdomainIndex]\n .replace(\"http://\", \"\")\n .replace(\"https://\", \"\")\n .replace(\".\", \"\")\n }\n\n return null\n}\n","import { LocaleString } from \"..\"\n\nexport default function detectHtmlTag(\n htmlTagIdentifier: string,\n document: Partial<Document> = globalThis.document\n): LocaleString {\n if (htmlTagIdentifier) {\n return document.documentElement.getAttribute(htmlTagIdentifier)\n }\n\n return null\n}\n","/**\n * Simple query string parser.\n *\n * @param {String} query The query string that needs to be parsed.\n * @returns {Object}\n */\nexport function parse(query) {\n const parser = /([^=?#&]+)=?([^&]*)/g\n const result = {}\n let part\n\n while ((part = parser.exec(query))) {\n const key = decode(part[1])\n const value = decode(part[2])\n\n //\n // Prevent overriding of existing properties. This ensures that build-in\n // methods like `toString` or __proto__ are not overriden by malicious\n // querystrings.\n //\n // In the case if failed decoding, we want to omit the key/value pairs\n // from the result.\n //\n if (key === null || value === null || key in result) continue\n result[key] = value\n }\n\n return result\n}\n\nfunction decode(input) {\n try {\n return decodeURIComponent(input.replace(/\\+/g, \" \"))\n } catch (e) {\n return null\n }\n}\n","import { parse } from \"../utils/query-string\"\nimport { LocaleString } from \"..\"\n\nexport default function detectFromUrl(\n parameter: string,\n location: Partial<Location> = globalThis.location\n): LocaleString {\n if (!parameter) throw new Error(\"fromUrl parameter is required\")\n\n const result: LocaleString = parse(location.search)[parameter] || null\n return result\n}\n","import \"./utils/globalThis.polyfill.js\"\nimport fromCookie from \"./detectors/fromCookie\"\nimport fromPath from \"./detectors/fromPath\"\nimport fromStorage from \"./detectors/fromStorage\"\nimport fromNavigator from \"./detectors/fromNavigator\"\nimport fromSubdomain from \"./detectors/fromSubdomain\"\nimport fromHtmlTag from \"./detectors/fromHtmlTag\"\nimport fromUrl from \"./detectors/fromUrl\"\n\nexport type LocaleString = string\nexport type DetectParamsFunctions = string\n\nfunction detect(...args): LocaleString | null {\n for (let i = 0; i < args.length; i++) {\n const res: LocaleString =\n typeof args[i] === \"function\" ? args[i]() : args[i]\n if (res) return res\n }\n\n return null\n}\n\nfunction multipleDetect(...args): LocaleString[] {\n const locales = []\n for (let i = 0; i < args.length; i++) {\n const res: LocaleString =\n typeof args[i] === \"function\" ? args[i]() : args[i]\n if (res) locales.push(res)\n }\n\n return locales\n}\n\nexport {\n detect,\n multipleDetect,\n fromCookie,\n fromHtmlTag,\n fromNavigator,\n fromPath,\n fromStorage,\n fromSubdomain,\n fromUrl,\n}\n"],"names":["getCookie","key","cookies","globalThis","document","cookie","split","jar","i","length","parts","value","slice","join","foundKey","replace","decodeURIComponent","e","detectFromCookie","detectFromPath","localePathIndex","location","locale","pathname","match","Array","isArray","detectFromStorage","options","useSessionStorage","sessionStorage","getItem","localStorage","detectFromNavigator","navigator","result","language","userLanguage","detectFromSubdomain","localeSubdomainIndex","href","detectHtmlTag","htmlTagIdentifier","documentElement","getAttribute","parse","query","parser","part","exec","decode","input","detectFromUrl","parameter","Error","search","detect","args","res","multipleDetect","locales","push"],"mappings":"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"}
package/build/index.d.ts CHANGED
@@ -6,7 +6,7 @@ declare function detectFromStorage(key: string, options?: {
6
6
  useSessionStorage: boolean;
7
7
  }): LocaleString;
8
8
 
9
- declare type IE11NavigatorLanguage = {
9
+ type IE11NavigatorLanguage = {
10
10
  userLanguage?: string;
11
11
  };
12
12
  declare function detectFromNavigator(navigator?: Partial<Navigator & IE11NavigatorLanguage>): LocaleString;
@@ -17,8 +17,8 @@ declare function detectHtmlTag(htmlTagIdentifier: string, document?: Partial<Doc
17
17
 
18
18
  declare function detectFromUrl(parameter: string, location?: Partial<Location>): LocaleString;
19
19
 
20
- declare type LocaleString = string;
21
- declare type DetectParamsFunctions = string;
20
+ type LocaleString = string;
21
+ type DetectParamsFunctions = string;
22
22
  declare function detect(...args: any[]): LocaleString | null;
23
23
  declare function multipleDetect(...args: any[]): LocaleString[];
24
24
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lingui/detect-locale",
3
- "version": "3.17.0",
3
+ "version": "3.17.2",
4
4
  "sideEffects": false,
5
5
  "description": "@Lingui package to help you find the correct browser/server locale",
6
6
  "main": "./build/cjs/index.js",
@@ -44,5 +44,5 @@
44
44
  "devDependencies": {
45
45
  "jsdom": "^16.4.0"
46
46
  },
47
- "gitHead": "1c8bc46213b35b25da8fe7a80ddcf6f6a5d9d539"
47
+ "gitHead": "31dcab5a9a8f88bfa8b3a2c7cd12aa2d908a1d80"
48
48
  }