@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 +16 -0
- package/build/cjs/index.js +33 -54
- package/build/cjs/index.js.map +1 -1
- package/build/esm/index.js +33 -54
- package/build/esm/index.js.map +1 -1
- package/build/index.d.ts +3 -3
- package/package.json +2 -2
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
|
package/build/cjs/index.js
CHANGED
|
@@ -3,31 +3,26 @@
|
|
|
3
3
|
function getCookie(key) {
|
|
4
4
|
if (!key) {
|
|
5
5
|
return;
|
|
6
|
-
}
|
|
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
|
-
|
|
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
|
-
|
|
40
|
-
|
|
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
|
-
|
|
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
|
-
|
|
63
|
-
|
|
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
|
-
|
|
69
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
82
|
+
const parser = /([^=?#&]+)=?([^&]*)/g;
|
|
83
|
+
const result = {};
|
|
84
|
+
let part;
|
|
99
85
|
while (part = parser.exec(query)) {
|
|
100
|
-
|
|
101
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
package/build/cjs/index.js.map
CHANGED
|
@@ -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/esm/index.js
CHANGED
|
@@ -1,31 +1,26 @@
|
|
|
1
1
|
function getCookie(key) {
|
|
2
2
|
if (!key) {
|
|
3
3
|
return;
|
|
4
|
-
}
|
|
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
|
-
|
|
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
|
-
|
|
38
|
-
|
|
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
|
-
|
|
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
|
-
|
|
61
|
-
|
|
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
|
-
|
|
67
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
80
|
+
const parser = /([^=?#&]+)=?([^&]*)/g;
|
|
81
|
+
const result = {};
|
|
82
|
+
let part;
|
|
97
83
|
while (part = parser.exec(query)) {
|
|
98
|
-
|
|
99
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
package/build/esm/index.js.map
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
21
|
-
|
|
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.
|
|
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": "
|
|
47
|
+
"gitHead": "31dcab5a9a8f88bfa8b3a2c7cd12aa2d908a1d80"
|
|
48
48
|
}
|