@rh-support/components 2.1.61 → 2.1.62
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/lib/esm/PhoneInput/PhoneInput.d.ts +1 -0
- package/lib/esm/PhoneInput/PhoneInput.d.ts.map +1 -1
- package/lib/esm/PhoneInput/PhoneInput.js +48 -16
- package/lib/esm/TopContentSearch/TopContentSearch.d.ts.map +1 -1
- package/lib/esm/TopContentSearch/TopContentSearch.js +1 -0
- package/lib/esm/hooks/index.d.ts +1 -0
- package/lib/esm/hooks/index.d.ts.map +1 -1
- package/lib/esm/hooks/index.js +1 -0
- package/lib/esm/hooks/useSearchDocument.d.ts +7 -0
- package/lib/esm/hooks/useSearchDocument.d.ts.map +1 -0
- package/lib/esm/hooks/useSearchDocument.js +42 -0
- package/package.json +5 -5
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PhoneInput.d.ts","sourceRoot":"","sources":["../../../src/PhoneInput/PhoneInput.tsx"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,CAAC;AAM3B,OAAO,KAA8B,MAAM,OAAO,CAAC;AAKnD,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,CAAC,MAAM,KAAA,KAAK,IAAI,CAAC;IACrC,WAAW,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACtE,mBAAmB,CAAC,EAAE,CAAC,MAAM,KAAA,KAAK,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,CAAC,OAAO,KAAA,KAAK,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"PhoneInput.d.ts","sourceRoot":"","sources":["../../../src/PhoneInput/PhoneInput.tsx"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,CAAC;AAM3B,OAAO,KAA8B,MAAM,OAAO,CAAC;AAKnD,UAAU,MAAM;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,CAAC,MAAM,KAAA,KAAK,IAAI,CAAC;IACrC,WAAW,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;IACtE,mBAAmB,CAAC,EAAE,CAAC,MAAM,KAAA,KAAK,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,CAAC,OAAO,KAAA,KAAK,IAAI,CAAC;IAC/B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACrC;AA4ED,eAAO,MAAM,WAAW,gBAAiB,MAAM;;;CAqB9C,CAAC;AAEF,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,qBAoRvC"}
|
|
@@ -32,11 +32,24 @@ const initializedCountries = COUNTRY_DATA.map((country) => {
|
|
|
32
32
|
};
|
|
33
33
|
return countryItem;
|
|
34
34
|
});
|
|
35
|
+
const trimAndReplacePlusFromPhone = (value) => {
|
|
36
|
+
var _a;
|
|
37
|
+
if (!value)
|
|
38
|
+
return '';
|
|
39
|
+
return (_a = value === null || value === void 0 ? void 0 : value.trim()) === null || _a === void 0 ? void 0 : _a.replace('+', '');
|
|
40
|
+
};
|
|
41
|
+
const removeAllSpaces = (value) => {
|
|
42
|
+
// to remove all trailing and in between spaces
|
|
43
|
+
if (!value)
|
|
44
|
+
return '';
|
|
45
|
+
return value === null || value === void 0 ? void 0 : value.replace(/\s+/g, '');
|
|
46
|
+
};
|
|
35
47
|
// Formatting phone numbers according to country
|
|
36
48
|
const formatNumber = (fullPhoneNumber, localFormat) => {
|
|
37
49
|
if (isEmpty(fullPhoneNumber))
|
|
38
50
|
return '';
|
|
39
51
|
let localPhone = fullPhoneNumber === null || fullPhoneNumber === void 0 ? void 0 : fullPhoneNumber.replace(PREFIX, '');
|
|
52
|
+
localPhone = removeAllSpaces(localPhone);
|
|
40
53
|
if (isEmpty(localPhone))
|
|
41
54
|
return '';
|
|
42
55
|
// Formatting inputted number
|
|
@@ -57,6 +70,8 @@ const formatNumber = (fullPhoneNumber, localFormat) => {
|
|
|
57
70
|
pattern += localFormat[j];
|
|
58
71
|
}
|
|
59
72
|
}
|
|
73
|
+
const isPatternWithPrefix = pattern.replace(/\s+/g, '').startsWith(PREFIX);
|
|
74
|
+
pattern = isPatternWithPrefix ? pattern : !isEmpty(isPatternWithPrefix) ? PREFIX + pattern : '';
|
|
60
75
|
return pattern;
|
|
61
76
|
};
|
|
62
77
|
// return phoneline and countrycode for any given phone
|
|
@@ -78,12 +93,13 @@ export const getPhoneObj = (phoneNumber) => {
|
|
|
78
93
|
};
|
|
79
94
|
};
|
|
80
95
|
export function PhoneInput(props) {
|
|
81
|
-
const { phoneValue, countryCode, onCountryCodeChange, onPhoneValueChange, validations, setInvalid } = props;
|
|
96
|
+
const { phoneValue, countryCode, onCountryCodeChange, onPhoneValueChange, validations, setInvalid, shouldNotSetCountryCode, } = props;
|
|
82
97
|
const { t } = useTranslation();
|
|
83
98
|
const [isOpen, setIsOpen] = useState(false);
|
|
84
99
|
const [iso2, setIso2] = useState('');
|
|
85
100
|
const [formattedNumber, setFormattedNumber] = useState('');
|
|
86
101
|
const [format, setFormat] = useState('');
|
|
102
|
+
const [phoneWithoutCountryCode, setPhoneWithoutCountryCode] = useState('');
|
|
87
103
|
const [countryObj, setCountryObj] = useState({
|
|
88
104
|
name: '', // Country name
|
|
89
105
|
regions: [''], // Surronding regions
|
|
@@ -98,8 +114,11 @@ export function PhoneInput(props) {
|
|
|
98
114
|
let localPhone = phoneNumber === null || phoneNumber === void 0 ? void 0 : phoneNumber.replace(PREFIX, '').trim();
|
|
99
115
|
localPhone = localPhone === null || localPhone === void 0 ? void 0 : localPhone.replace('(', '').trim();
|
|
100
116
|
localPhone = localPhone === null || localPhone === void 0 ? void 0 : localPhone.replace(/ +/g, '');
|
|
101
|
-
|
|
117
|
+
if (shouldNotSetCountryCode) {
|
|
118
|
+
return PREFIX + DEFAULT_MASK; // default format for portal phone without country code
|
|
119
|
+
}
|
|
102
120
|
if (!isEmpty(countryObj) && isEqual(localPhone, countryObj.dialCode)) {
|
|
121
|
+
// if the user selects a value from the dropdown and the country code is the same as prev, iso2 values shouldn't override
|
|
103
122
|
onCountryCodeChange && onCountryCodeChange(PREFIX + countryObj.countryCode);
|
|
104
123
|
return countryObj.format;
|
|
105
124
|
}
|
|
@@ -198,24 +217,15 @@ export function PhoneInput(props) {
|
|
|
198
217
|
React.createElement("div", { className: "pf-v5-u-display-inline-flex" },
|
|
199
218
|
React.createElement("div", { className: `flag ${iso2}`, style: { marginRight: '5px' } }),
|
|
200
219
|
iso2.toUpperCase())));
|
|
201
|
-
useEffect(() => {
|
|
202
|
-
if (isEmpty(phoneValue)) {
|
|
203
|
-
setInvalid && setInvalid(false);
|
|
204
|
-
return;
|
|
205
|
-
}
|
|
206
|
-
if (isEmpty(iso2)) {
|
|
207
|
-
const localFormat = setLocalFormat(phoneValue);
|
|
208
|
-
const _formattedNumber = formatNumber(phoneValue, localFormat);
|
|
209
|
-
setFormattedNumber(_formattedNumber);
|
|
210
|
-
}
|
|
211
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
212
|
-
}, []);
|
|
213
220
|
useEffect(() => {
|
|
214
221
|
if (!isEmpty(countryObj.iso2) && `${PREFIX}${countryObj.dialCode}` !== countryCode) {
|
|
222
|
+
if (shouldNotSetCountryCode) {
|
|
223
|
+
onCountryCodeChange && onCountryCodeChange(PREFIX + countryObj.dialCode);
|
|
224
|
+
}
|
|
215
225
|
setIso2(countryObj.iso2);
|
|
216
226
|
setFormat(countryObj.format);
|
|
217
|
-
onPhoneValueChange(`${PREFIX}${countryObj.dialCode}`);
|
|
218
|
-
setFormattedNumber(`${PREFIX}${countryObj.dialCode}`);
|
|
227
|
+
onPhoneValueChange(`${PREFIX}${countryObj.dialCode} ${trimAndReplacePlusFromPhone(phoneWithoutCountryCode)}`);
|
|
228
|
+
setFormattedNumber(`${PREFIX}${countryObj.dialCode} ${trimAndReplacePlusFromPhone(phoneWithoutCountryCode)}`);
|
|
219
229
|
}
|
|
220
230
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
221
231
|
}, [countryObj]);
|
|
@@ -243,15 +253,37 @@ export function PhoneInput(props) {
|
|
|
243
253
|
setInvalid && setInvalid(false);
|
|
244
254
|
setFormattedNumber('');
|
|
245
255
|
onPhoneValueChange('');
|
|
256
|
+
setPhoneWithoutCountryCode('');
|
|
246
257
|
}
|
|
247
258
|
else {
|
|
248
259
|
onPhoneValueChange(phoneValue);
|
|
249
260
|
const localFormat = setLocalFormat(phoneValue);
|
|
250
261
|
const _formattedNumber = formatNumber(phoneValue, localFormat);
|
|
251
262
|
setFormattedNumber(_formattedNumber);
|
|
263
|
+
// to have phone without country code so it can populated with the newly selected country code
|
|
264
|
+
// instead of keeping it just country code
|
|
265
|
+
setPhoneWithoutCountryCode(removeAllSpaces(phoneValue).replace(countryCode, ''));
|
|
252
266
|
}
|
|
253
267
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
254
268
|
}, [phoneValue]);
|
|
269
|
+
// For first time user whose phone is fetched from portal without country code
|
|
270
|
+
// For phone length less or equal to 10 country code shouldn't be fetched to avoid faulty phone population
|
|
271
|
+
// shouldNotSetCountryCode flag from ContactPhoneNumber
|
|
272
|
+
useEffect(() => {
|
|
273
|
+
if (shouldNotSetCountryCode) {
|
|
274
|
+
setIso2('');
|
|
275
|
+
onCountryCodeChange && onCountryCodeChange('');
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
setIso2(countryObj.iso2);
|
|
279
|
+
onCountryCodeChange && onCountryCodeChange(PREFIX + countryCode);
|
|
280
|
+
}
|
|
281
|
+
onPhoneValueChange && onPhoneValueChange(removeAllSpaces(phoneValue)); // removing trailing and in between spaces
|
|
282
|
+
const localFormat = setLocalFormat(phoneValue);
|
|
283
|
+
const _formattedNumber = formatNumber(phoneValue, localFormat);
|
|
284
|
+
setFormattedNumber(_formattedNumber);
|
|
285
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
286
|
+
}, [shouldNotSetCountryCode]);
|
|
255
287
|
return (React.createElement(InputGroup, { className: "phone-number-input" },
|
|
256
288
|
React.createElement(InputGroupItem, null,
|
|
257
289
|
React.createElement("div", null,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TopContentSearch.d.ts","sourceRoot":"","sources":["../../../src/TopContentSearch/TopContentSearch.tsx"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,MAAM,2DAA2D,CAAC;AAQ5F,OAAO,KAA4D,MAAM,OAAO,CAAC;AAGjF,UAAU,MAAM;IACZ,cAAc,EAAE,MAAM,CAAC;IACvB,2BAA2B,EAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACzD,cAAc,EAAE,eAAe,EAAE,CAAC;IAClC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,QAAQ,CAAC;CAC7B;AAED,eAAO,MAAM,gBAAgB,eAAgB,MAAM,WASlD,CAAC;AAOF,wBAAgB,gBAAgB,CAAC,EAC7B,cAAmB,EACnB,2BAA6C,EAC7C,QAAQ,EACR,cAAc,EACd,mBAA2B,EAC3B,WAAgB,EAChB,cAAc,GACjB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"TopContentSearch.d.ts","sourceRoot":"","sources":["../../../src/TopContentSearch/TopContentSearch.tsx"],"names":[],"mappings":"AAAA,OAAO,yBAAyB,CAAC;AAEjC,OAAO,EAAE,eAAe,EAAE,MAAM,2DAA2D,CAAC;AAQ5F,OAAO,KAA4D,MAAM,OAAO,CAAC;AAGjF,UAAU,MAAM;IACZ,cAAc,EAAE,MAAM,CAAC;IACvB,2BAA2B,EAAE,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACzD,cAAc,EAAE,eAAe,EAAE,CAAC;IAClC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,eAAe,EAAE,KAAK,IAAI,CAAC;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,QAAQ,CAAC;CAC7B;AAED,eAAO,MAAM,gBAAgB,eAAgB,MAAM,WASlD,CAAC;AAOF,wBAAgB,gBAAgB,CAAC,EAC7B,cAAmB,EACnB,2BAA6C,EAC7C,QAAQ,EACR,cAAc,EACd,mBAA2B,EAC3B,WAAgB,EAChB,cAAc,GACjB,EAAE,MAAM,qBAyHR"}
|
|
@@ -70,6 +70,7 @@ export function TopContentSearch({ topContentData = [], topContentResultsWrapper
|
|
|
70
70
|
}, [topContentResultsWrapperRef]);
|
|
71
71
|
const onSearchInputClear = useCallback((event) => {
|
|
72
72
|
setSearchText('');
|
|
73
|
+
setSearchQuery && setSearchQuery('');
|
|
73
74
|
onSearch('', topContentData);
|
|
74
75
|
logCustomEvent(CustomEvents.inputClear, event);
|
|
75
76
|
highlightSearchResults('');
|
package/lib/esm/hooks/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,eAAe,CAAC;AAC9B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,qBAAqB,CAAC"}
|
package/lib/esm/hooks/index.js
CHANGED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
interface IIndexStrategy<T> {
|
|
2
|
+
indexKey: keyof T;
|
|
3
|
+
strategy: (doc: T) => string;
|
|
4
|
+
}
|
|
5
|
+
export declare function useSearchDocument<T>(documents: T[], searchQuery: string, indexStrategy: IIndexStrategy<T>): T[];
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=useSearchDocument.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSearchDocument.d.ts","sourceRoot":"","sources":["../../../src/hooks/useSearchDocument.ts"],"names":[],"mappings":"AAMA,UAAU,cAAc,CAAC,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClB,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,CAAC;CAChC;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC,CAAC,OAwCzG"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import SearchApi, { INDEX_MODES } from 'js-worker-search';
|
|
11
|
+
import isEmpty from 'lodash/isEmpty';
|
|
12
|
+
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
13
|
+
import { useDeepCompareDebounce } from './useDebounce';
|
|
14
|
+
export function useSearchDocument(documents, searchQuery, indexStrategy) {
|
|
15
|
+
const [filteredDocs, setFilteredDocs] = useState(documents);
|
|
16
|
+
const searchWorkerRef = useRef(new SearchApi({
|
|
17
|
+
indexMode: INDEX_MODES.ALL_SUBSTRINGS,
|
|
18
|
+
caseSensitive: false,
|
|
19
|
+
matchAnyToken: true,
|
|
20
|
+
}));
|
|
21
|
+
const handleSearch = useCallback((query) => __awaiter(this, void 0, void 0, function* () {
|
|
22
|
+
if (isEmpty(query)) {
|
|
23
|
+
setFilteredDocs(documents);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const indexedVals = yield searchWorkerRef.current.search(query);
|
|
27
|
+
setFilteredDocs(documents.filter((d) => indexedVals.includes(d[indexStrategy.indexKey])));
|
|
28
|
+
}),
|
|
29
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
30
|
+
[documents]);
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
documents.forEach((doc) => {
|
|
33
|
+
const indexedString = indexStrategy.strategy(doc);
|
|
34
|
+
searchWorkerRef.current.indexDocument(doc[indexStrategy.indexKey], indexedString);
|
|
35
|
+
});
|
|
36
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
37
|
+
}, [documents]);
|
|
38
|
+
useDeepCompareDebounce(() => {
|
|
39
|
+
handleSearch(searchQuery);
|
|
40
|
+
}, [searchQuery, documents], 500);
|
|
41
|
+
return filteredDocs;
|
|
42
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rh-support/components",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.62",
|
|
4
4
|
"description": "Contains all reusabel components for support app",
|
|
5
5
|
"author": "Vikas Rathee <vrathee@redhat.com>",
|
|
6
6
|
"license": "ISC",
|
|
@@ -67,9 +67,9 @@
|
|
|
67
67
|
"@patternfly/patternfly": "5.1.0",
|
|
68
68
|
"@patternfly/react-core": "5.1.1",
|
|
69
69
|
"@patternfly/react-table": "5.1.1",
|
|
70
|
-
"@rh-support/types": "2.0.
|
|
71
|
-
"@rh-support/user-permissions": "2.1.
|
|
72
|
-
"@rh-support/utils": "2.1.
|
|
70
|
+
"@rh-support/types": "2.0.4",
|
|
71
|
+
"@rh-support/user-permissions": "2.1.45",
|
|
72
|
+
"@rh-support/utils": "2.1.34",
|
|
73
73
|
"dompurify": "^2.2.6",
|
|
74
74
|
"downshift": "^6.0.5",
|
|
75
75
|
"js-worker-search": "^1.4.1",
|
|
@@ -109,5 +109,5 @@
|
|
|
109
109
|
"defaults and supports es6-module",
|
|
110
110
|
"maintained node versions"
|
|
111
111
|
],
|
|
112
|
-
"gitHead": "
|
|
112
|
+
"gitHead": "ecb9820a2fe40793e79c0f9f4786ec657070fe64"
|
|
113
113
|
}
|