nmce-func 0.0.3 → 0.0.7
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/_func/addressFunc.d.ts +31 -0
- package/_func/authentication.service.d.ts +24 -0
- package/_func/currencyFunc.d.ts +20 -0
- package/_func/dateFunc.d.ts +121 -0
- package/_func/htmlPrintFunc.d.ts +18 -0
- package/_func/index.d.ts +10 -0
- package/_func/javascriptFunc.d.ts +9 -0
- package/_func/jsonFunc.d.ts +31 -0
- package/_func/stringAusFunc.d.ts +40 -0
- package/_func/stringFunc.d.ts +41 -0
- package/_func/uuidFunc.d.ts +7 -0
- package/bundles/nmce-func.umd.js +1294 -0
- package/bundles/nmce-func.umd.js.map +1 -0
- package/bundles/nmce-func.umd.min.js +2 -0
- package/bundles/nmce-func.umd.min.js.map +1 -0
- package/esm2015/_func/addressFunc.js +49 -0
- package/esm2015/_func/authentication.service.js +41 -0
- package/esm2015/_func/currencyFunc.js +72 -0
- package/esm2015/_func/dateFunc.js +316 -0
- package/esm2015/_func/htmlPrintFunc.js +45 -0
- package/esm2015/_func/index.js +11 -0
- package/esm2015/_func/javascriptFunc.js +17 -0
- package/esm2015/_func/jsonFunc.js +67 -0
- package/esm2015/_func/stringAusFunc.js +200 -0
- package/esm2015/_func/stringFunc.js +93 -0
- package/esm2015/_func/uuidFunc.js +17 -0
- package/esm2015/nmce-func.js +5 -0
- package/esm2015/public-api.js +5 -0
- package/fesm2015/nmce-func.js +927 -0
- package/fesm2015/nmce-func.js.map +1 -0
- package/nmce-func.d.ts +4 -0
- package/nmce-func.metadata.json +1 -0
- package/package.json +18 -4
- package/public-api.d.ts +1 -0
- package/karma.conf.js +0 -44
- package/ng-package.json +0 -11
- package/src/_func/addressFunc.spec.ts +0 -12
- package/src/_func/addressFunc.ts +0 -54
- package/src/_func/authentication.service.ts +0 -47
- package/src/_func/currencyFunc.ts +0 -71
- package/src/_func/dateFunc.spec.ts +0 -191
- package/src/_func/dateFunc.ts +0 -385
- package/src/_func/helperFunc.ts +0 -27
- package/src/_func/htmlFunc.ts +0 -46
- package/src/_func/index.ts +0 -9
- package/src/_func/jsFunc.ts +0 -48
- package/src/_func/stringFunc.spec.ts +0 -142
- package/src/_func/stringFunc.ts +0 -337
- package/src/public-api.ts +0 -5
- package/src/test.ts +0 -26
- package/tsconfig.lib.json +0 -25
- package/tsconfig.lib.prod.json +0 -11
- package/tsconfig.spec.json +0 -17
- package/tslint.json +0 -17
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* String functions specific to Australia
|
|
3
|
+
*/
|
|
4
|
+
export class StringAusFunc {
|
|
5
|
+
/**
|
|
6
|
+
* Validate medicare number
|
|
7
|
+
* @param n
|
|
8
|
+
* @returns validation error message
|
|
9
|
+
*/
|
|
10
|
+
static validateMedicare(n) {
|
|
11
|
+
if (!n) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
if (n && n.length === 10) {
|
|
15
|
+
const matches = n.match(/^(\d{8})(\d)/);
|
|
16
|
+
if (!matches) {
|
|
17
|
+
return {
|
|
18
|
+
code: 2, message: 'Medicare number should be all digit.'
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
const base = matches[1];
|
|
22
|
+
const checkDigit = matches[2];
|
|
23
|
+
const weights = [1, 3, 7, 9, 1, 3, 7, 9];
|
|
24
|
+
let sum = 0;
|
|
25
|
+
for (let i = 0; i < weights.length; i++) {
|
|
26
|
+
sum += parseInt(base[i], 10) * weights[i];
|
|
27
|
+
}
|
|
28
|
+
//console.debug(`sum: ${sum} checkDigits: ${checkDigit}`);
|
|
29
|
+
const isValid = sum % 10 === parseInt(checkDigit, 10);
|
|
30
|
+
if (!isValid) {
|
|
31
|
+
return {
|
|
32
|
+
code: 3, message: 'Checksum is incorrect.'
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
return { code: 1, message: 'Length should be 10.' };
|
|
38
|
+
}
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
static validateMedicareProviderNumber(providerNumber) {
|
|
42
|
+
if (!providerNumber) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
if (!/^[0-9]{6}[0-9ABCDEFGHJKLMNPQRTUVWXY][ABFHJKLTWXY]/.test(providerNumber)) {
|
|
46
|
+
return { code: 1, message: 'Not matching provider number format.' };
|
|
47
|
+
}
|
|
48
|
+
const practiceLocationValues = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'T', 'U', 'V', 'W', 'X', 'Y'];
|
|
49
|
+
const remainderValues = ['Y', 'X', 'W', 'T', 'L', 'K', 'J', 'H', 'F', 'B', 'A'];
|
|
50
|
+
const stemWeights = [3, 5, 8, 4, 2, 1];
|
|
51
|
+
const stemNumbers = providerNumber.substr(0, 6).split('').map((char) => parseInt(char));
|
|
52
|
+
const practiceLoc = practiceLocationValues.findIndex((e) => e === providerNumber[6]);
|
|
53
|
+
const checksum = providerNumber[7];
|
|
54
|
+
const zipped = stemWeights.map((x, i) => [x, stemNumbers[i]]);
|
|
55
|
+
const sumWeights = zipped.map((y) => y[1] * y[0]).reduce((total, num) => total + num);
|
|
56
|
+
const remainder = (sumWeights + practiceLoc * 6) % 11;
|
|
57
|
+
const result = remainderValues[remainder];
|
|
58
|
+
const valid = result === checksum;
|
|
59
|
+
if (!valid) {
|
|
60
|
+
return { code: 2, message: 'Checksum is incorrect.' };
|
|
61
|
+
}
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
static validateDVAFileNumber(dva) {
|
|
65
|
+
if (!dva) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
const states = ['N', 'V', 'Q', 'S', 'W', 'T'];
|
|
69
|
+
const warCodes = [' ', 'X', 'KM', 'SR', 'SS', 'SM', 'SWP', 'AGX', 'BW', 'GW', 'CGW',
|
|
70
|
+
'P', 'PX', 'PAD', 'PAM', 'PCA', 'PCR', 'PCV', 'PMS', 'PSW', 'PWO', 'HKX', 'MAL',
|
|
71
|
+
'CN', 'CNX', 'IV', 'NF', 'NG', 'RD', 'RDX', 'SA', 'SAX', 'A',
|
|
72
|
+
'N', 'NX', 'NSW', 'NSM',
|
|
73
|
+
'BUR', 'CNK', 'CNS', 'FIJ', 'GHA', 'HKS', 'IND', 'KYA', 'MAU', 'MLS', 'MTX', 'MWI', 'NK', 'NGR', 'NRD', 'NSS', 'PK']; //British Commonwealth Countries - SP Eligibility
|
|
74
|
+
if (!states.includes(dva.charAt(0))) {
|
|
75
|
+
return { code: 1, message: 'State incorrect.' };
|
|
76
|
+
}
|
|
77
|
+
const ns = dva.match(/\d+/);
|
|
78
|
+
if (!ns) {
|
|
79
|
+
return { code: 2, message: 'No number.' };
|
|
80
|
+
}
|
|
81
|
+
const n = ns[0];
|
|
82
|
+
const idxOfN = dva.indexOf(n);
|
|
83
|
+
const warCode = dva.substring(1, idxOfN);
|
|
84
|
+
if (!warCodes.includes(warCode)) {
|
|
85
|
+
return { code: 3, message: 'War code invalid.' };
|
|
86
|
+
}
|
|
87
|
+
const lenOfN = n.length;
|
|
88
|
+
const lenOfWc = warCode.length;
|
|
89
|
+
if (lenOfN + lenOfWc > 7) {
|
|
90
|
+
return { code: 4, message: 'File number length should not be greater 7.' };
|
|
91
|
+
}
|
|
92
|
+
return null;
|
|
93
|
+
}
|
|
94
|
+
static validateTFN(n) {
|
|
95
|
+
if (!n) {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
const tfn = n.replace(/\s+/g, '').replace(/[-]/g, '');
|
|
99
|
+
const isNumber = /^[0-9]+$/.test(tfn);
|
|
100
|
+
if (!isNumber) {
|
|
101
|
+
return { code: 1, message: 'Invalid TFN, only numbers are allowed.' };
|
|
102
|
+
}
|
|
103
|
+
const length = tfn.length;
|
|
104
|
+
if (length !== 9) {
|
|
105
|
+
return {
|
|
106
|
+
code: 2, message: 'Invalid TFN, must have 9 digits.'
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
const digits = tfn.split('').map(d => parseInt(d));
|
|
110
|
+
const sum = (digits[0] * 1)
|
|
111
|
+
+ (digits[1] * 4)
|
|
112
|
+
+ (digits[2] * 3)
|
|
113
|
+
+ (digits[3] * 7)
|
|
114
|
+
+ (digits[4] * 5)
|
|
115
|
+
+ (digits[5] * 8)
|
|
116
|
+
+ (digits[6] * 6)
|
|
117
|
+
+ (digits[7] * 9)
|
|
118
|
+
+ (digits[8] * 10);
|
|
119
|
+
const remainder = sum % 11;
|
|
120
|
+
const valid = remainder === 0;
|
|
121
|
+
if (!valid) {
|
|
122
|
+
return { code: 3, message: 'Checksum is incorrect.' };
|
|
123
|
+
}
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
static addWeighted(p, v, i) {
|
|
127
|
+
return p + v * StringAusFunc.weights[i];
|
|
128
|
+
}
|
|
129
|
+
static addAcnWeighted(p, v, i) {
|
|
130
|
+
return p + v * StringAusFunc.acnWeights[i];
|
|
131
|
+
}
|
|
132
|
+
static generateLookup() {
|
|
133
|
+
const ns = [];
|
|
134
|
+
for (let i = 0; i < 10; ++i) {
|
|
135
|
+
ns[i * 19 % 89] = i;
|
|
136
|
+
}
|
|
137
|
+
return ns;
|
|
138
|
+
}
|
|
139
|
+
static validateABN(abn) {
|
|
140
|
+
if (!abn) {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
const digits = abn.replace(/[^\d]/g, '').split('').map(Number);
|
|
144
|
+
if (digits.length !== 11) {
|
|
145
|
+
return { code: 1, message: 'Expect 11-digit.' };
|
|
146
|
+
}
|
|
147
|
+
digits[0] -= 1;
|
|
148
|
+
const sum = digits.reduce(StringAusFunc.addWeighted, 0);
|
|
149
|
+
if (sum % 89 === 0) {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
digits[0] += 1;
|
|
153
|
+
let sum1 = sum - digits[10] * StringAusFunc.weights[10];
|
|
154
|
+
let digit = StringAusFunc.suggestLookup[89 - sum1 % 89];
|
|
155
|
+
if (digit !== undefined) {
|
|
156
|
+
return {
|
|
157
|
+
code: 2,
|
|
158
|
+
message: 'Checksum1 is incorrect.'
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
const sum2 = sum1 - digits[9] * StringAusFunc.weights[9];
|
|
163
|
+
for (let i = 0; i < 10; ++i) {
|
|
164
|
+
sum1 = sum2 + i * StringAusFunc.weights[9];
|
|
165
|
+
digit = StringAusFunc.suggestLookup[89 - sum1 % 89];
|
|
166
|
+
if (digit !== undefined) {
|
|
167
|
+
return {
|
|
168
|
+
code: 3,
|
|
169
|
+
message: 'Checksum2 is incorrect.'
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
static validateACN(acn) {
|
|
177
|
+
if (!acn) {
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
const digits = acn.replace(/[^\d]/g, '').split('').map(Number);
|
|
181
|
+
console.log(digits);
|
|
182
|
+
if (digits.length !== 9) {
|
|
183
|
+
return { code: 1, message: 'Expect 9-digit.' };
|
|
184
|
+
}
|
|
185
|
+
const sum = digits.slice(0, 8).reduce(StringAusFunc.addAcnWeighted, 0);
|
|
186
|
+
const lastDigit = 10 - sum % 10;
|
|
187
|
+
if (lastDigit === digits[8]) {
|
|
188
|
+
return null;
|
|
189
|
+
}
|
|
190
|
+
return {
|
|
191
|
+
code: 2,
|
|
192
|
+
message: 'Checksum is incorrect.'
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
//thanks to https://github.com/sidorares/australian-business-number/blob/0591475f5978fd122b472edcdc7efe6d96d56f26/index.js
|
|
197
|
+
StringAusFunc.acnWeights = [8, 7, 6, 5, 4, 3, 2, 1];
|
|
198
|
+
StringAusFunc.weights = [10, 1, 3, 5, 7, 9, 11, 13, 15, 17, 19];
|
|
199
|
+
StringAusFunc.suggestLookup = StringAusFunc.generateLookup();
|
|
200
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nQXVzRnVuYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25tY2UtZnVuYy9zcmMvX2Z1bmMvc3RyaW5nQXVzRnVuYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUNILE1BQU0sT0FBTyxhQUFhO0lBUXpCOzs7O09BSUc7SUFDSCxNQUFNLENBQUMsZ0JBQWdCLENBQUMsQ0FBNEI7UUFDbkQsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNQLE9BQU8sSUFBSSxDQUFDO1NBQ1o7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRTtZQUN6QixNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1lBRXhDLElBQUksQ0FBQyxPQUFPLEVBQUU7Z0JBQ2IsT0FBTztvQkFDTixJQUFJLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxzQ0FBc0M7aUJBQ3hELENBQUM7YUFDRjtZQUVELE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QixNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDOUIsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFFekMsSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1lBQ1osS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7Z0JBQ3hDLEdBQUcsSUFBSSxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUMxQztZQUVELDJEQUEyRDtZQUMzRCxNQUFNLE9BQU8sR0FBRyxHQUFHLEdBQUcsRUFBRSxLQUFLLFFBQVEsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdEQsSUFBSSxDQUFDLE9BQU8sRUFBRTtnQkFDYixPQUFPO29CQUNOLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLHdCQUF3QjtpQkFDMUMsQ0FBQzthQUNGO1NBQ0Q7YUFBTTtZQUNOLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxDQUFDO1NBQ3BEO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDYixDQUFDO0lBRUQsTUFBTSxDQUFDLDhCQUE4QixDQUFDLGNBQXlDO1FBQzlFLElBQUksQ0FBQyxjQUFjLEVBQUU7WUFDcEIsT0FBTyxJQUFJLENBQUM7U0FDWjtRQUVELElBQUksQ0FBQyxtREFBbUQsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEVBQUU7WUFDOUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLHNDQUFzQyxFQUFFLENBQUM7U0FDcEU7UUFFRCxNQUFNLHNCQUFzQixHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2hNLE1BQU0sZUFBZSxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ2hGLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUV2QyxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUN4RixNQUFNLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyRixNQUFNLFFBQVEsR0FBRyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFbkMsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUQsTUFBTSxVQUFVLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLEtBQUssR0FBRyxHQUFHLENBQUMsQ0FBQztRQUN0RixNQUFNLFNBQVMsR0FBRyxDQUFDLFVBQVUsR0FBRyxXQUFXLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBRXRELE1BQU0sTUFBTSxHQUFHLGVBQWUs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QUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN0QyxxQkFBTyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRWxELDJCQUFhLEdBQWEsYUFBYSxDQUFDLGNBQWMsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIFN0cmluZyBmdW5jdGlvbnMgc3BlY2lmaWMgdG8gQXVzdHJhbGlhXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgU3RyaW5nQXVzRnVuYyB7XHJcblxyXG5cdC8vdGhhbmtzIHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9zaWRvcmFyZXMvYXVzdHJhbGlhbi1idXNpbmVzcy1udW1iZXIvYmxvYi8wNTkxNDc1ZjU5NzhmZDEyMmI0NzJlZGNkYzdlZmU2ZDk2ZDU2ZjI2L2luZGV4LmpzXHJcblx0cHJpdmF0ZSBzdGF0aWMgYWNuV2VpZ2h0cyA9IFs4LCA3LCA2LCA1LCA0LCAzLCAyLCAxXTtcclxuXHRwcml2YXRlIHN0YXRpYyB3ZWlnaHRzID0gWzEwLCAxLCAzLCA1LCA3LCA5LCAxMSwgMTMsIDE1LCAxNywgMTldO1xyXG5cclxuXHRwcml2YXRlIHN0YXRpYyBzdWdnZXN0TG9va3VwOiBudW1iZXJbXSA9IFN0cmluZ0F1c0Z1bmMuZ2VuZXJhdGVMb29rdXAoKTtcclxuXHJcblx0LyoqXHJcblx0ICogVmFsaWRhdGUgbWVkaWNhcmUgbnVtYmVyXHJcblx0ICogQHBhcmFtIG5cclxuXHQgKiBAcmV0dXJucyB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2VcclxuXHQgKi9cclxuXHRzdGF0aWMgdmFsaWRhdGVNZWRpY2FyZShuOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogeyBjb2RlOiBudW1iZXIsIG1lc3NhZ2U6IHN0cmluZyB9IHwgbnVsbCB7XHJcblx0XHRpZiAoIW4pIHtcclxuXHRcdFx0cmV0dXJuIG51bGw7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKG4gJiYgbi5sZW5ndGggPT09IDEwKSB7XHJcblx0XHRcdGNvbnN0IG1hdGNoZXMgPSBuLm1hdGNoKC9eKFxcZHs4fSkoXFxkKS8pO1xyXG5cclxuXHRcdFx0aWYgKCFtYXRjaGVzKSB7XHJcblx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdGNvZGU6IDIsIG1lc3NhZ2U6ICdNZWRpY2FyZSBudW1iZXIgc2hvdWxkIGJlIGFsbCBkaWdpdC4nXHJcblx0XHRcdFx0fTtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0Y29uc3QgYmFzZSA9IG1hdGNoZXNbMV07XHJcblx0XHRcdGNvbnN0IGNoZWNrRGlnaXQgPSBtYXRjaGVzWzJdO1xyXG5cdFx0XHRjb25zdCB3ZWlnaHRzID0gWzEsIDMsIDcsIDksIDEsIDMsIDcsIDldO1xyXG5cclxuXHRcdFx0bGV0IHN1bSA9IDA7XHJcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgd2VpZ2h0cy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdHN1bSArPSBwYXJzZUludChiYXNlW2ldLCAxMCkgKiB3ZWlnaHRzW2ldO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvL2NvbnNvbGUuZGVidWcoYHN1bTogJHtzdW19ICBjaGVja0RpZ2l0czogJHtjaGVja0RpZ2l0fWApO1xyXG5cdFx0XHRjb25zdCBpc1ZhbGlkID0gc3VtICUgMTAgPT09IHBhcnNlSW50KGNoZWNrRGlnaXQsIDEwKTtcclxuXHRcdFx0aWYgKCFpc1ZhbGlkKSB7XHJcblx0XHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcdGNvZGU6IDMsIG1lc3NhZ2U6ICdDaGVja3N1bSBpcyBpbmNvcnJlY3QuJ1xyXG5cdFx0XHRcdH07XHJcblx0XHRcdH1cclxuXHRcdH0gZWxzZSB7XHJcblx0XHRcdHJldHVybiB7IGNvZGU6IDEsIG1lc3NhZ2U6ICdMZW5ndGggc2hvdWxkIGJlIDEwLicgfTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gbnVsbDtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyB2YWxpZGF0ZU1lZGljYXJlUHJvdmlkZXJOdW1iZXIocHJvdmlkZXJOdW1iZXI6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiB7IGNvZGU6IG51bWJlciwgbWVzc2FnZTogc3RyaW5nIH0gfCBudWxsIHtcclxuXHRcdGlmICghcHJvdmlkZXJOdW1iZXIpIHtcclxuXHRcdFx0cmV0dXJuIG51bGw7XHJcblx0XHR9XHJcblxyXG5cdFx0aWYgKCEvXlswLTldezZ9WzAtOUFCQ0RFRkdISktMTU5QUVJUVVZXWFldW0FCRkhKS0xUV1hZXS8udGVzdChwcm92aWRlck51bWJlcikpIHtcclxuXHRcdFx0cmV0dXJuIHsgY29kZTogMSwgbWVzc2FnZTogJ05vdCBtYXRjaGluZyBwcm92aWRlciBudW1iZXIgZm9ybWF0LicgfTtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBwcmFjdGljZUxvY2F0aW9uVmFsdWVzID0gWycwJywgJzEnLCAnMicsICczJywgJzQnLCAnNScsICc2JywgJzcnLCAnOCcsICc5JywgJ0EnLCAnQicsICdDJywgJ0QnLCAnRScsICdGJywgJ0cnLCAnSCcsICdKJywgJ0snLCAnTCcsICdNJywgJ04nLCAnUCcsICdRJywgJ1InLCAnVCcsICdVJywgJ1YnLCAnVycsICdYJywgJ1knXTtcclxuXHRcdGNvbnN0IHJlbWFpbmRlclZhbHVlcyA9IFsnWScsICdYJywgJ1cnLCAnVCcsICdMJywgJ0snLCAnSicsICdIJywgJ0YnLCAnQicsICdBJ107XHJcblx0XHRjb25zdCBzdGVtV2VpZ2h0cyA9IFszLCA1LCA4LCA0LCAyLCAxXTtcclxuXHJcblx0XHRjb25zdCBzdGVtTnVtYmVycyA9IHByb3ZpZGVyTnVtYmVyLnN1YnN0cigwLCA2KS5zcGxpdCgnJykubWFwKChjaGFyKSA9PiBwYXJzZUludChjaGFyKSk7XHJcblx0XHRjb25zdCBwcmFjdGljZUxvYyA9IHByYWN0aWNlTG9jYXRpb25WYWx1ZXMuZmluZEluZGV4KChlKSA9PiBlID09PSBwcm92aWRlck51bWJlcls2XSk7XHJcblx0XHRjb25zdCBjaGVja3N1bSA9IHByb3ZpZGVyTnVtYmVyWzddO1xyXG5cclxuXHRcdGNvbnN0IHppcHBlZCA9IHN0ZW1XZWlnaHRzLm1hcCgoeCwgaSkgPT4gW3gsIHN0ZW1OdW1iZXJzW2ldXSk7XHJcblx0XHRjb25zdCBzdW1XZWlnaHRzID0gemlwcGVkLm1hcCgoeSkgPT4geVsxXSAqIHlbMF0pLnJlZHVjZSgodG90YWwsIG51bSkgPT4gdG90YWwgKyBudW0pO1xyXG5cdFx0Y29uc3QgcmVtYWluZGVyID0gKHN1bVdlaWdodHMgKyBwcmFjdGljZUxvYyAqIDYpICUgMTE7XHJcblxyXG5cdFx0Y29uc3QgcmVzdWx0ID0gcmVtYWluZGVyVmFsdWVzW3JlbWFpbmRlcl07XHJcblxyXG5cdFx0Y29uc3QgdmFsaWQgPSByZXN1bHQgPT09IGNoZWNrc3VtO1xyXG5cdFx0aWYgKCF2YWxpZCkge1xyXG5cdFx0XHRyZXR1cm4geyBjb2RlOiAyLCBtZXNzYWdlOiAnQ2hlY2tzdW0gaXMgaW5jb3JyZWN0LicgfTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gbnVsbDtcclxuXHR9XHJcblxyXG5cdHN0YXRpYyB2YWxpZGF0ZURWQUZpbGVOdW1iZXIoZHZhOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogeyBjb2RlOiBudW1iZXIsIG1lc3NhZ2U6IHN0cmluZyB9IHwgbnVsbCB7XHJcblx0XHRpZiAoIWR2YSkge1xyXG5cdFx0XHRyZXR1cm4gbnVsbDtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBzdGF0ZXMgPSBbJ04nLCAnVicsICdRJywgJ1MnLCAnVycsICdUJ107XHJcblx0XHRjb25zdCB3YXJDb2RlcyA9IFsnICcsICdYJywgJ0tNJywgJ1NSJywgJ1NTJywgJ1NNJywgJ1NXUCcsICdBR1gnLCAnQlcnLCAnR1cnLCAnQ0dXJywgLy9BdXN0cmFsaWFuIEZvcmNlc1xyXG5cdFx0XHQnUCcsICdQWCcsICdQQUQnLCAnUEFNJywgJ1BDQScsICdQQ1InLCAnUENWJywgJ1BNUycsICdQU1cnLCAnUFdPJywgJ0hLWCcsICdNQUwnLCAvL0JyaXRpc2ggQWRtaW5pc3RyYXRpb24gR3JvdXBcclxuXHRcdFx0J0NOJywgJ0NOWCcsICdJVicsICdORicsICdORycsICdSRCcsICdSRFgnLCAnU0EnLCAnU0FYJywgJ0EnLCAvL090aGVyIE92ZXJzZWFzIEZvcmNlc1xyXG5cdFx0XHQnTicsICdOWCcsICdOU1cnLCAnTlNNJywgLy9OZXcgWmVhbGFuZCBBZG1pbmlzdHJhdGlvbiBHcm91cFxyXG5cdFx0XHQnQlVSJywgJ0NOSycsICdDTlMnLCAnRklKJywgJ0dIQScsICdIS1MnLCAnSU5EJywgJ0tZQScsICdNQVUnLCAnTUxTJywgJ01UWCcsICdNV0knLCAnTksnLCAnTkdSJywgJ05SRCcsICdOU1MnLCAnUEsnXS8vQnJpdGlzaCBDb21tb253ZWFsdGggQ291bnRyaWVzIC0gU1AgRWxpZ2liaWxpdHlcclxuXHJcblx0XHRpZiAoIXN0YXRlcy5pbmNsdWRlcyhkdmEuY2hhckF0KDApKSkge1xyXG5cdFx0XHRyZXR1cm4geyBjb2RlOiAxLCBtZXNzYWdlOiAnU3RhdGUgaW5jb3JyZWN0LicgfTtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBucyA9IGR2YS5tYXRjaCgvXFxkKy8pO1xyXG5cdFx0aWYgKCFucykge1xyXG5cdFx0XHRyZXR1cm4geyBjb2RlOiAyLCBtZXNzYWdlOiAnTm8gbnVtYmVyLicgfTtcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBuID0gbnNbMF07XHJcblx0XHRjb25zdCBpZHhPZk4gPSBkdmEuaW5kZXhPZihuKTtcclxuXHRcdGNvbnN0IHdhckNvZGUgPSBkdmEuc3Vic3RyaW5nKDEsIGlkeE9mTik7XHJcblx0XHRpZiAoIXdhckNvZGVzLmluY2x1ZGVzKHdhckNvZGUpKSB7XHJcblx0XHRcdHJldHVybiB7IGNvZGU6IDMsIG1lc3NhZ2U6ICdXYXIgY29kZSBpbnZhbGlkLicgfVxyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IGxlbk9mTiA9IG4ubGVuZ3RoO1xyXG5cdFx0Y29uc3QgbGVuT2ZXYyA9IHdhckNvZGUubGVuZ3RoO1xyXG5cdFx0aWYgKGxlbk9mTiArIGxlbk9mV2MgPiA3KSB7XHJcblx0XHRcdHJldHVybiB7IGNvZGU6IDQsIG1lc3NhZ2U6ICdGaWxlIG51bWJlciBsZW5ndGggc2hvdWxkIG5vdCBiZSBncmVhdGVyIDcuJyB9XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIG51bGw7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgdmFsaWRhdGVURk4objogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHsgY29kZTogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmcgfSB8IG51bGwge1xyXG5cdFx0aWYgKCFuKSB7XHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IHRmbiA9IG4ucmVwbGFjZSgvXFxzKy9nLCAnJykucmVwbGFjZSgvWy1dL2csICcnKTtcclxuXHJcblx0XHRjb25zdCBpc051bWJlciA9IC9eWzAtOV0rJC8udGVzdCh0Zm4pO1xyXG5cdFx0aWYgKCFpc051bWJlcikge1xyXG5cdFx0XHRyZXR1cm4geyBjb2RlOiAxLCBtZXNzYWdlOiAnSW52YWxpZCBURk4sIG9ubHkgbnVtYmVycyBhcmUgYWxsb3dlZC4nIH07XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgbGVuZ3RoID0gdGZuLmxlbmd0aDtcclxuXHRcdGlmIChsZW5ndGggIT09IDkpIHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRjb2RlOiAyLCBtZXNzYWdlOiAnSW52YWxpZCBURk4sIG11c3QgaGF2ZSA5IGRpZ2l0cy4nXHJcblx0XHRcdH07XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgZGlnaXRzID0gdGZuLnNwbGl0KCcnKS5tYXAoZCA9PiBwYXJzZUludChkKSk7XHJcblxyXG5cdFx0Y29uc3Qgc3VtID0gKGRpZ2l0c1swXSAqIDEpXHJcblx0XHRcdCsgKGRpZ2l0c1sxXSAqIDQpXHJcblx0XHRcdCsgKGRpZ2l0c1syXSAqIDMpXHJcblx0XHRcdCsgKGRpZ2l0c1szXSAqIDcpXHJcblx0XHRcdCsgKGRpZ2l0c1s0XSAqIDUpXHJcblx0XHRcdCsgKGRpZ2l0c1s1XSAqIDgpXHJcblx0XHRcdCsgKGRpZ2l0c1s2XSAqIDYpXHJcblx0XHRcdCsgKGRpZ2l0c1s3XSAqIDkpXHJcblx0XHRcdCsgKGRpZ2l0c1s4XSAqIDEwKTtcclxuXHJcblx0XHRjb25zdCByZW1haW5kZXIgPSBzdW0gJSAxMTtcclxuXHRcdGNvbnN0IHZhbGlkID0gcmVtYWluZGVyID09PSAwO1xyXG5cdFx0aWYgKCF2YWxpZCkge1xyXG5cdFx0XHRyZXR1cm4geyBjb2RlOiAzLCBtZXNzYWdlOiAnQ2hlY2tzdW0gaXMgaW5jb3JyZWN0LicgfTtcclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gbnVsbDtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgc3RhdGljIGFkZFdlaWdodGVkKHA6IG51bWJlciwgdjogbnVtYmVyLCBpOiBudW1iZXIpIHtcclxuXHRcdHJldHVybiBwICsgdiAqIFN0cmluZ0F1c0Z1bmMud2VpZ2h0c1tpXTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgc3RhdGljIGFkZEFjbldlaWdodGVkKHA6IG51bWJlciwgdjogbnVtYmVyLCBpOiBudW1iZXIpIHtcclxuXHRcdHJldHVybiBwICsgdiAqIFN0cmluZ0F1c0Z1bmMuYWNuV2VpZ2h0c1tpXTtcclxuXHR9XHJcblxyXG5cdHByaXZhdGUgc3RhdGljIGdlbmVyYXRlTG9va3VwKCk6IG51bWJlcltdIHtcclxuXHRcdGNvbnN0IG5zOiBudW1iZXJbXSA9IFtdO1xyXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgKytpKSB7XHJcblx0XHRcdG5zW2kgKiAxOSAlIDg5XSA9IGk7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIG5zO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIHZhbGlkYXRlQUJOKGFibjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHsgY29kZTogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmcgfSB8IG51bGwge1xyXG5cdFx0aWYgKCFhYm4pIHtcclxuXHRcdFx0cmV0dXJuIG51bGw7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgZGlnaXRzID0gYWJuLnJlcGxhY2UoL1teXFxkXS9nLCAnJykuc3BsaXQoJycpLm1hcChOdW1iZXIpO1xyXG5cdFx0aWYgKGRpZ2l0cy5sZW5ndGggIT09IDExKSB7XHJcblx0XHRcdHJldHVybiB7IGNvZGU6IDEsIG1lc3NhZ2U6ICdFeHBlY3QgMTEtZGlnaXQuJyB9O1xyXG5cdFx0fVxyXG5cclxuXHRcdGRpZ2l0c1swXSAtPSAxO1xyXG5cclxuXHRcdGNvbnN0IHN1bSA9IGRpZ2l0cy5yZWR1Y2UoU3RyaW5nQXVzRnVuYy5hZGRXZWlnaHRlZCwgMCk7XHJcblxyXG5cdFx0aWYgKHN1bSAlIDg5ID09PSAwKSB7XHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0fVxyXG5cclxuXHRcdGRpZ2l0c1swXSArPSAxO1xyXG5cclxuXHRcdGxldCBzdW0xID0gc3VtIC0gZGlnaXRzWzEwXSAqIFN0cmluZ0F1c0Z1bmMud2VpZ2h0c1sxMF07XHJcblx0XHRsZXQgZGlnaXQgPSBTdHJpbmdBdXNGdW5jLnN1Z2dlc3RMb29rdXBbODkgLSBzdW0xICUgODldO1xyXG5cdFx0aWYgKGRpZ2l0ICE9PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRjb2RlOiAyLFxyXG5cdFx0XHRcdG1lc3NhZ2U6ICdDaGVja3N1bTEgaXMgaW5jb3JyZWN0LidcclxuXHRcdFx0fVxyXG5cdFx0fSBlbHNlIHtcclxuXHRcdFx0Y29uc3Qgc3VtMiA9IHN1bTEgLSBkaWdpdHNbOV0gKiBTdHJpbmdBdXNGdW5jLndlaWdodHNbOV07XHJcblx0XHRcdGZvciAobGV0IGkgPSAwOyBpIDwgMTA7ICsraSkge1xyXG5cdFx0XHRcdHN1bTEgPSBzdW0yICsgaSAqIFN0cmluZ0F1c0Z1bmMud2VpZ2h0c1s5XTtcclxuXHRcdFx0XHRkaWdpdCA9IFN0cmluZ0F1c0Z1bmMuc3VnZ2VzdExvb2t1cFs4OSAtIHN1bTEgJSA4OV07XHJcblx0XHRcdFx0aWYgKGRpZ2l0ICE9PSB1bmRlZmluZWQpIHtcclxuXHRcdFx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHRcdGNvZGU6IDMsXHJcblx0XHRcdFx0XHRcdG1lc3NhZ2U6ICdDaGVja3N1bTIgaXMgaW5jb3JyZWN0LidcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHJcblx0XHRyZXR1cm4gbnVsbFxyXG5cdH1cclxuXHJcblx0c3RhdGljIHZhbGlkYXRlQUNOKGFjbjogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHsgY29kZTogbnVtYmVyLCBtZXNzYWdlOiBzdHJpbmcgfSB8IG51bGwge1xyXG5cdFx0aWYgKCFhY24pIHtcclxuXHRcdFx0cmV0dXJuIG51bGw7XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgZGlnaXRzID0gYWNuLnJlcGxhY2UoL1teXFxkXS9nLCAnJykuc3BsaXQoJycpLm1hcChOdW1iZXIpO1xyXG5cdFx0Y29uc29sZS5sb2coZGlnaXRzKTtcclxuXHRcdGlmIChkaWdpdHMubGVuZ3RoICE9PSA5KSB7XHJcblx0XHRcdHJldHVybiB7IGNvZGU6IDEsIG1lc3NhZ2U6ICdFeHBlY3QgOS1kaWdpdC4nIH07XHJcblx0XHR9XHJcblxyXG5cclxuXHRcdGNvbnN0IHN1bSA9IGRpZ2l0cy5zbGljZSgwLCA4KS5yZWR1Y2UoU3RyaW5nQXVzRnVuYy5hZGRBY25XZWlnaHRlZCwgMCk7XHJcblx0XHRjb25zdCBsYXN0RGlnaXQgPSAxMCAtIHN1bSAlIDEwO1xyXG5cdFx0aWYgKGxhc3REaWdpdCA9PT0gZGlnaXRzWzhdKSB7XHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiB7XHJcblx0XHRcdGNvZGU6IDIsXHJcblx0XHRcdG1lc3NhZ2U6ICdDaGVja3N1bSBpcyBpbmNvcnJlY3QuJ1xyXG5cdFx0fTtcclxuXHR9XHJcbn1cclxuIl19
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
export class StringFunc {
|
|
2
|
+
/**
|
|
3
|
+
* Up to 2 letters. For John Smith, returns JS, for Huang, Zijian, returns ZH
|
|
4
|
+
* @param s
|
|
5
|
+
*/
|
|
6
|
+
static getAbbr(s) {
|
|
7
|
+
if (!s) {
|
|
8
|
+
return '';
|
|
9
|
+
}
|
|
10
|
+
const sArray = s.split(/[\s,]+/);
|
|
11
|
+
const comma = s.indexOf(',') >= 0;
|
|
12
|
+
if (sArray.length === 1) {
|
|
13
|
+
return sArray[0][0];
|
|
14
|
+
}
|
|
15
|
+
return comma ? sArray[1][0] + sArray[0][0] : sArray[0][0] + sArray[1][0];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* A substring with line breaks replaced by space.
|
|
19
|
+
* @param s
|
|
20
|
+
* @param length
|
|
21
|
+
* @returns result, or empty string if the input is empty, null or undefined
|
|
22
|
+
*/
|
|
23
|
+
static getOneLineDigest(s, length) {
|
|
24
|
+
if (!s) {
|
|
25
|
+
return '';
|
|
26
|
+
}
|
|
27
|
+
const ss = s.substring(0, length);
|
|
28
|
+
const st = ss.replace(new RegExp('\n', 'g'), ' ') + ((s.length > length) ? '...' : '');
|
|
29
|
+
return st.trim();
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Remove line breaks and econde with encodeURI() so the data could be saved in Azure as meta. If the string is truncated, the return will have ... suffix.
|
|
33
|
+
* @param s
|
|
34
|
+
* @param length
|
|
35
|
+
* @returns result, or empty string if the input is empty, null or undefined
|
|
36
|
+
*/
|
|
37
|
+
static getOneLineDigestOfHtml(s, length) {
|
|
38
|
+
if (!s) {
|
|
39
|
+
return '';
|
|
40
|
+
}
|
|
41
|
+
const ss = s.substring(0, length);
|
|
42
|
+
const st = ss.replace(new RegExp('\n', 'g'), ' ') + ((s.length > length) ? '...' : '');
|
|
43
|
+
return encodeURI(st.trim()); //need to encode in order to save as meta in Azure.
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Pad number with zero
|
|
47
|
+
* @param num
|
|
48
|
+
* @param size
|
|
49
|
+
* @returns
|
|
50
|
+
*/
|
|
51
|
+
static pad(num, size) {
|
|
52
|
+
if (num == null) {
|
|
53
|
+
return '';
|
|
54
|
+
}
|
|
55
|
+
let s = num + '';
|
|
56
|
+
while (s.length < size) {
|
|
57
|
+
s = '0' + s;
|
|
58
|
+
}
|
|
59
|
+
return s;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* get plain text of HTML content
|
|
63
|
+
* @param s
|
|
64
|
+
* @returns result. If input is empty, null, or undefined, return the same.
|
|
65
|
+
*/
|
|
66
|
+
static getHtmlPlainText(s) {
|
|
67
|
+
if (!s) {
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
const parser = new DOMParser();
|
|
71
|
+
const html = parser.parseFromString(s, 'text/html');
|
|
72
|
+
return html.body.textContent;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
*
|
|
76
|
+
* @param s
|
|
77
|
+
* @returns result. If input is empty, null, or undefined, return the same.
|
|
78
|
+
*/
|
|
79
|
+
static capitalizeWords(s) {
|
|
80
|
+
if (!s) {
|
|
81
|
+
return s;
|
|
82
|
+
}
|
|
83
|
+
return s.replace(/(?:^|\s)\S/g, (a) => a.toUpperCase());
|
|
84
|
+
}
|
|
85
|
+
static validateEmail(email) {
|
|
86
|
+
if (!email) {
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
const re = /^(([^<>()[\]\\.,;:\s@"]+(\.[^<>()[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
|
|
90
|
+
return re.test(email.toLowerCase());
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nRnVuYy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25tY2UtZnVuYy9zcmMvX2Z1bmMvc3RyaW5nRnVuYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLE9BQU8sVUFBVTtJQUV0Qjs7O09BR0c7SUFDSCxNQUFNLENBQUMsT0FBTyxDQUFDLENBQTRCO1FBQzFDLElBQUksQ0FBQyxDQUFDLEVBQUU7WUFDUCxPQUFPLEVBQUUsQ0FBQztTQUNWO1FBRUQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNqQyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVsQyxJQUFJLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ3hCLE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3BCO1FBRUQsT0FBTyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDMUUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsTUFBTSxDQUFDLGdCQUFnQixDQUFDLENBQTRCLEVBQUUsTUFBYztRQUNuRSxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ1AsT0FBTyxFQUFFLENBQUM7U0FDVjtRQUVELE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZGLE9BQU8sRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2xCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxDQUE0QixFQUFFLE1BQWM7UUFDekUsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNQLE9BQU8sRUFBRSxDQUFDO1NBQ1Y7UUFFRCxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNsQyxNQUFNLEVBQUUsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2RixPQUFPLFNBQVMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLG1EQUFtRDtJQUNqRixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQXVCLEVBQUUsSUFBWTtRQUMvQyxJQUFJLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDaEIsT0FBTyxFQUFFLENBQUM7U0FDVjtRQUVELElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDakIsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLElBQUksRUFBRTtZQUFFLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxDQUFDO1NBQUU7UUFDeEMsT0FBTyxDQUFDLENBQUM7SUFDVixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUE0QjtRQUNuRCxJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ1AsT0FBTyxJQUFJLENBQUM7U0FDWjtRQUVELE1BQU0sTUFBTSxHQUFHLElBQUksU0FBUyxFQUFFLENBQUM7UUFDL0IsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDcEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM5QixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBNEI7UUFDbEQsSUFBSSxDQUFDLENBQUMsRUFBRTtZQUNQLE9BQU8sQ0FBQyxDQUFDO1NBQ1Q7UUFFRCxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxLQUFnQztRQUNwRCxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1gsT0FBTyxJQUFJLENBQUM7U0FDWjtRQUNELE1BQU0sRUFBRSxHQUFHLHVKQUF1SixDQUFDO1FBQ25LLE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUNyQyxDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgU3RyaW5nRnVuYyB7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFVwIHRvIDIgbGV0dGVycy4gRm9yIEpvaG4gU21pdGgsIHJldHVybnMgSlMsIGZvciBIdWFuZywgWmlqaWFuLCByZXR1cm5zIFpIXHJcblx0ICogQHBhcmFtIHNcclxuXHQgKi9cclxuXHRzdGF0aWMgZ2V0QWJicihzOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKSB7XHJcblx0XHRpZiAoIXMpIHtcclxuXHRcdFx0cmV0dXJuICcnO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IHNBcnJheSA9IHMuc3BsaXQoL1tcXHMsXSsvKTtcclxuXHRcdGNvbnN0IGNvbW1hID0gcy5pbmRleE9mKCcsJykgPj0gMDtcclxuXHJcblx0XHRpZiAoc0FycmF5Lmxlbmd0aCA9PT0gMSkge1xyXG5cdFx0XHRyZXR1cm4gc0FycmF5WzBdWzBdO1xyXG5cdFx0fVxyXG5cclxuXHRcdHJldHVybiBjb21tYSA/IHNBcnJheVsxXVswXSArIHNBcnJheVswXVswXSA6IHNBcnJheVswXVswXSArIHNBcnJheVsxXVswXTtcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIEEgc3Vic3RyaW5nIHdpdGggbGluZSBicmVha3MgcmVwbGFjZWQgYnkgc3BhY2UuXHJcblx0ICogQHBhcmFtIHNcclxuXHQgKiBAcGFyYW0gbGVuZ3RoXHJcblx0ICogQHJldHVybnMgcmVzdWx0LCBvciBlbXB0eSBzdHJpbmcgaWYgdGhlIGlucHV0IGlzIGVtcHR5LCBudWxsIG9yIHVuZGVmaW5lZFxyXG5cdCAqL1xyXG5cdHN0YXRpYyBnZXRPbmVMaW5lRGlnZXN0KHM6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQsIGxlbmd0aDogbnVtYmVyKSB7XHJcblx0XHRpZiAoIXMpIHtcclxuXHRcdFx0cmV0dXJuICcnO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IHNzID0gcy5zdWJzdHJpbmcoMCwgbGVuZ3RoKTtcclxuXHRcdGNvbnN0IHN0ID0gc3MucmVwbGFjZShuZXcgUmVnRXhwKCdcXG4nLCAnZycpLCAnICcpICsgKChzLmxlbmd0aCA+IGxlbmd0aCkgPyAnLi4uJyA6ICcnKTtcclxuXHRcdHJldHVybiBzdC50cmltKCk7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKiBSZW1vdmUgbGluZSBicmVha3MgYW5kIGVjb25kZSB3aXRoIGVuY29kZVVSSSgpIHNvIHRoZSBkYXRhIGNvdWxkIGJlIHNhdmVkIGluIEF6dXJlIGFzIG1ldGEuIElmIHRoZSBzdHJpbmcgaXMgdHJ1bmNhdGVkLCB0aGUgcmV0dXJuIHdpbGwgaGF2ZSAuLi4gc3VmZml4LlxyXG5cdCAqIEBwYXJhbSBzXHJcblx0ICogQHBhcmFtIGxlbmd0aFxyXG5cdCAqIEByZXR1cm5zIHJlc3VsdCwgb3IgZW1wdHkgc3RyaW5nIGlmIHRoZSBpbnB1dCBpcyBlbXB0eSwgbnVsbCBvciB1bmRlZmluZWRcclxuXHQgKi9cclxuXHRzdGF0aWMgZ2V0T25lTGluZURpZ2VzdE9mSHRtbChzOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLCBsZW5ndGg6IG51bWJlcikge1xyXG5cdFx0aWYgKCFzKSB7XHJcblx0XHRcdHJldHVybiAnJztcclxuXHRcdH1cclxuXHJcblx0XHRjb25zdCBzcyA9IHMuc3Vic3RyaW5nKDAsIGxlbmd0aCk7XHJcblx0XHRjb25zdCBzdCA9IHNzLnJlcGxhY2UobmV3IFJlZ0V4cCgnXFxuJywgJ2cnKSwgJyAnKSArICgocy5sZW5ndGggPiBsZW5ndGgpID8gJy4uLicgOiAnJyk7XHJcblx0XHRyZXR1cm4gZW5jb2RlVVJJKHN0LnRyaW0oKSk7IC8vbmVlZCB0byBlbmNvZGUgaW4gb3JkZXIgdG8gc2F2ZSBhcyBtZXRhIGluIEF6dXJlLlxyXG5cdH1cclxuXHJcblx0LyoqXHJcblx0ICogUGFkIG51bWJlciB3aXRoIHplcm9cclxuXHQgKiBAcGFyYW0gbnVtIFxyXG5cdCAqIEBwYXJhbSBzaXplIFxyXG5cdCAqIEByZXR1cm5zIFxyXG5cdCAqL1xyXG5cdHN0YXRpYyBwYWQobnVtOiBudW1iZXIgfCB1bmRlZmluZWQsIHNpemU6IG51bWJlcik6IHN0cmluZyB7XHJcblx0XHRpZiAobnVtID09IG51bGwpIHtcclxuXHRcdFx0cmV0dXJuICcnO1xyXG5cdFx0fVxyXG5cclxuXHRcdGxldCBzID0gbnVtICsgJyc7XHJcblx0XHR3aGlsZSAocy5sZW5ndGggPCBzaXplKSB7IHMgPSAnMCcgKyBzOyB9XHJcblx0XHRyZXR1cm4gcztcclxuXHR9XHJcblxyXG5cdC8qKlxyXG5cdCAqIGdldCBwbGFpbiB0ZXh0IG9mIEhUTUwgY29udGVudFxyXG5cdCAqIEBwYXJhbSBzXHJcblx0ICogQHJldHVybnMgcmVzdWx0LiBJZiBpbnB1dCBpcyBlbXB0eSwgbnVsbCwgb3IgdW5kZWZpbmVkLCByZXR1cm4gdGhlIHNhbWUuXHJcblx0ICovXHJcblx0c3RhdGljIGdldEh0bWxQbGFpblRleHQoczogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IG51bGwge1xyXG5cdFx0aWYgKCFzKSB7XHJcblx0XHRcdHJldHVybiBudWxsO1xyXG5cdFx0fVxyXG5cclxuXHRcdGNvbnN0IHBhcnNlciA9IG5ldyBET01QYXJzZXIoKTtcclxuXHRcdGNvbnN0IGh0bWwgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKHMsICd0ZXh0L2h0bWwnKTtcclxuXHRcdHJldHVybiBodG1sLmJvZHkudGV4dENvbnRlbnQ7XHJcblx0fVxyXG5cclxuXHQvKipcclxuXHQgKlxyXG5cdCAqIEBwYXJhbSBzXHJcblx0ICogQHJldHVybnMgcmVzdWx0LiBJZiBpbnB1dCBpcyBlbXB0eSwgbnVsbCwgb3IgdW5kZWZpbmVkLCByZXR1cm4gdGhlIHNhbWUuXHJcblx0ICovXHJcblx0c3RhdGljIGNhcGl0YWxpemVXb3JkcyhzOiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgbnVsbCB8IHVuZGVmaW5lZCB7IC8vIHRoYW5rcyB0byBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8yMzMyODExL2NhcGl0YWxpemUtd29yZHMtaW4tc3RyaW5nXHJcblx0XHRpZiAoIXMpIHtcclxuXHRcdFx0cmV0dXJuIHM7XHJcblx0XHR9XHJcblxyXG5cdFx0cmV0dXJuIHMucmVwbGFjZSgvKD86XnxcXHMpXFxTL2csIChhKSA9PiBhLnRvVXBwZXJDYXNlKCkpO1xyXG5cdH1cclxuXHJcblx0c3RhdGljIHZhbGlkYXRlRW1haWwoZW1haWw6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWQpOiBib29sZWFuIHtcclxuXHRcdGlmICghZW1haWwpIHtcclxuXHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHR9XHJcblx0XHRjb25zdCByZSA9IC9eKChbXjw+KClbXFxdXFxcXC4sOzpcXHNAXCJdKyhcXC5bXjw+KClbXFxdXFxcXC4sOzpcXHNAXCJdKykqKXwoXCIuK1wiKSlAKChcXFtbMC05XXsxLDN9XFwuWzAtOV17MSwzfVxcLlswLTldezEsM31cXC5bMC05XXsxLDN9XFxdKXwoKFthLXpBLVpcXC0wLTldK1xcLikrW2EtekEtWl17Mix9KSkkLztcclxuXHRcdHJldHVybiByZS50ZXN0KGVtYWlsLnRvTG93ZXJDYXNlKCkpO1xyXG5cdH1cclxufVxyXG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { v4 as uuid } from 'uuid'; //todo: somehow the system could not recognize v5.
|
|
2
|
+
// import { v5 as uuid } from 'uuid/v5 causes ERROR in src / app / _func / helperFunc.ts(1, 10): error TS2305: Module '"C:/VSProjects/ApsCloudTrunk/APS.WebPos.NGCli/NGSource/node_modules/@types/uuid/v5"' has no exported member 'v5'
|
|
3
|
+
// https://github.com/DefinitelyTyped/DefinitelyTyped/pull/28439
|
|
4
|
+
export class UuidFunc {
|
|
5
|
+
/**
|
|
6
|
+
* 36 UUID string including 4 hyphens. MySql stores GUID as 36 bytes anyway rather than 16bytes.
|
|
7
|
+
*/
|
|
8
|
+
static newUUID() {
|
|
9
|
+
// return uuid('medilink.com.au', 'apscloud');
|
|
10
|
+
return uuid();
|
|
11
|
+
}
|
|
12
|
+
static newUUIDStartWith0() {
|
|
13
|
+
const s = uuid();
|
|
14
|
+
return '0000' + s.slice(4);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXVpZEZ1bmMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wcm9qZWN0cy9ubWNlLWZ1bmMvc3JjL19mdW5jL3V1aWRGdW5jLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxFQUFFLElBQUksSUFBSSxFQUFFLE1BQU0sTUFBTSxDQUFDLENBQUMsbURBQW1EO0FBQ3RGLHVPQUF1TztBQUN2TyxnRUFBZ0U7QUFFaEUsTUFBTSxPQUFPLFFBQVE7SUFDcEI7O09BRUc7SUFDSCxNQUFNLENBQUMsT0FBTztRQUNmLCtDQUErQztRQUM3QyxPQUFPLElBQUksRUFBRSxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sQ0FBQyxpQkFBaUI7UUFDdkIsTUFBTSxDQUFDLEdBQUcsSUFBSSxFQUFFLENBQUM7UUFDakIsT0FBTyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1QixDQUFDO0NBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB2NCBhcyB1dWlkIH0gZnJvbSAndXVpZCc7IC8vdG9kbzogc29tZWhvdyAgdGhlIHN5c3RlbSBjb3VsZCBub3QgcmVjb2duaXplIHY1LlxyXG4vLyBpbXBvcnQgeyB2NSBhcyB1dWlkIH0gZnJvbSAndXVpZC92NSBjYXVzZXMgRVJST1IgaW4gc3JjIC8gYXBwIC8gX2Z1bmMgLyBoZWxwZXJGdW5jLnRzKDEsIDEwKTogZXJyb3IgVFMyMzA1OiBNb2R1bGUgJ1wiQzovVlNQcm9qZWN0cy9BcHNDbG91ZFRydW5rL0FQUy5XZWJQb3MuTkdDbGkvTkdTb3VyY2Uvbm9kZV9tb2R1bGVzL0B0eXBlcy91dWlkL3Y1XCInIGhhcyBubyBleHBvcnRlZCBtZW1iZXIgJ3Y1J1xyXG4vLyBodHRwczovL2dpdGh1Yi5jb20vRGVmaW5pdGVseVR5cGVkL0RlZmluaXRlbHlUeXBlZC9wdWxsLzI4NDM5XHJcblxyXG5leHBvcnQgY2xhc3MgVXVpZEZ1bmMge1xyXG5cdC8qKlxyXG5cdCAqIDM2IFVVSUQgc3RyaW5nIGluY2x1ZGluZyA0IGh5cGhlbnMuIE15U3FsIHN0b3JlcyBHVUlEIGFzIDM2IGJ5dGVzIGFueXdheSByYXRoZXIgdGhhbiAxNmJ5dGVzLlxyXG5cdCAqL1xyXG5cdHN0YXRpYyBuZXdVVUlEKCk6IHN0cmluZyB7XHJcbi8vXHRcdHJldHVybiB1dWlkKCdtZWRpbGluay5jb20uYXUnLCAnYXBzY2xvdWQnKTtcclxuXHRcdHJldHVybiB1dWlkKCk7XHJcblx0fVxyXG5cclxuXHRzdGF0aWMgbmV3VVVJRFN0YXJ0V2l0aDAoKSB7XHJcblx0XHRjb25zdCBzID0gdXVpZCgpO1xyXG5cdFx0cmV0dXJuICcwMDAwJyArIHMuc2xpY2UoNCk7XHJcblx0fVxyXG59XHJcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated bundle index. Do not edit.
|
|
3
|
+
*/
|
|
4
|
+
export * from './public-api';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm1jZS1mdW5jLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vcHJvamVjdHMvbm1jZS1mdW5jL3NyYy9ubWNlLWZ1bmMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLGNBQWMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9wdWJsaWMtYXBpJztcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Public API Surface of nmce-func
|
|
3
|
+
*/
|
|
4
|
+
export * from './_func/index';
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3Byb2plY3RzL25tY2UtZnVuYy9zcmMvcHVibGljLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGNBQWMsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBubWNlLWZ1bmNcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL19mdW5jL2luZGV4JztcbiJdfQ==
|