UNPKG

6.8 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.getLicenseButtonsFile = getLicenseButtonsFile;
7exports.getLicenseButtons = getLicenseButtons;
8
9function _builderUtil() {
10 const data = require("builder-util");
11
12 _builderUtil = function () {
13 return data;
14 };
15
16 return data;
17}
18
19function _license() {
20 const data = require("app-builder-lib/out/util/license");
21
22 _license = function () {
23 return data;
24 };
25
26 return data;
27}
28
29function _fsExtra() {
30 const data = require("fs-extra");
31
32 _fsExtra = function () {
33 return data;
34 };
35
36 return data;
37}
38
39function iconv() {
40 const data = _interopRequireWildcard(require("iconv-lite"));
41
42 iconv = function () {
43 return data;
44 };
45
46 return data;
47}
48
49function _jsYaml() {
50 const data = require("js-yaml");
51
52 _jsYaml = function () {
53 return data;
54 };
55
56 return data;
57}
58
59function _dmgUtil() {
60 const data = require("./dmgUtil");
61
62 _dmgUtil = function () {
63 return data;
64 };
65
66 return data;
67}
68
69function _licenseDefaultButtons() {
70 const data = require("./licenseDefaultButtons");
71
72 _licenseDefaultButtons = function () {
73 return data;
74 };
75
76 return data;
77}
78
79function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
80
81function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
82
83async function getLicenseButtonsFile(packager) {
84 return (0, _license().getLicenseAssets)((await packager.resourceList).filter(it => {
85 const name = it.toLowerCase(); // noinspection SpellCheckingInspection
86
87 return name.startsWith("licensebuttons_") && (name.endsWith(".json") || name.endsWith(".yml"));
88 }), packager);
89}
90
91async function getLicenseButtons(licenseButtonFiles, langWithRegion, id, name) {
92 let data = (0, _licenseDefaultButtons().getDefaultButtons)(langWithRegion, id, name);
93
94 for (const item of licenseButtonFiles) {
95 if (item.langWithRegion !== langWithRegion) {
96 continue;
97 }
98
99 try {
100 const fileData = (0, _jsYaml().safeLoad)((await (0, _fsExtra().readFile)(item.file, "utf-8")));
101 const buttonsStr = labelToHex(fileData.lang, item.lang, item.langWithRegion) + labelToHex(fileData.agree, item.lang, item.langWithRegion) + labelToHex(fileData.disagree, item.lang, item.langWithRegion) + labelToHex(fileData.print, item.lang, item.langWithRegion) + labelToHex(fileData.save, item.lang, item.langWithRegion) + labelToHex(fileData.description, item.lang, item.langWithRegion);
102 data = `data 'STR#' (${id}, "${name}") {\n`;
103 data += (0, _dmgUtil().serializeString)("0006" + buttonsStr);
104 data += `\n};`;
105
106 if (_builderUtil().log.isDebugEnabled) {
107 _builderUtil().log.debug({
108 lang: item.langName,
109 data
110 }, `overwriting license buttons`);
111 }
112
113 return data;
114 } catch (e) {
115 _builderUtil().log.debug({
116 error: e
117 }, "cannot overwrite license buttons");
118
119 return data;
120 }
121 }
122
123 return data;
124}
125
126function labelToHex(label, lang, langWithRegion) {
127 const lbl = hexEncode(label, lang, langWithRegion).toString().toUpperCase();
128 const len = numberToHex(lbl.length / 2);
129 return len + lbl;
130}
131
132function numberToHex(nb) {
133 return ("0" + nb.toString(16)).slice(-2);
134}
135
136function hexEncode(str, lang, langWithRegion) {
137 const macCodePages = getMacCodePage(lang, langWithRegion);
138 let result = "";
139
140 for (let i = 0; i < str.length; i++) {
141 try {
142 let hex = getMacHexCode(str, i, macCodePages);
143
144 if (hex === undefined) {
145 hex = "3F"; //?
146 }
147
148 result += hex;
149 } catch (e) {
150 _builderUtil().log.debug({
151 error: e,
152 char: str[i]
153 }, "cannot convert");
154
155 result += "3F"; //?
156 }
157 }
158
159 return result;
160}
161
162function getMacCodePage(lang, langWithRegion) {
163 switch (lang) {
164 case "ja":
165 //japanese
166 return ["euc-jp"];
167 //Apple Japanese
168
169 case "zh":
170 //chinese
171 if (langWithRegion === "zh_CN") {
172 return ["gb2312"]; //Apple Simplified Chinese (GB 2312)
173 }
174
175 return ["big5"];
176 //Apple Traditional Chinese (Big5)
177
178 case "ko":
179 //korean
180 return ["euc-kr"];
181 //Apple Korean
182
183 case "ar": //arabic
184
185 case "ur":
186 //urdu
187 return ["macarabic"];
188 //Apple Arabic
189
190 case "he":
191 //hebrew
192 return ["machebrew"];
193 //Apple Hebrew
194
195 case "el": //greek
196
197 case "elc":
198 //greek
199 return ["macgreek"];
200 //Apple Greek
201
202 case "ru": //russian
203
204 case "be": //belarussian
205
206 case "sr": //serbian
207
208 case "bg": //bulgarian
209
210 case "uz":
211 //uzbek
212 return ["maccyrillic"];
213 //Apple Macintosh Cyrillic
214
215 case "ro":
216 //romanian
217 return ["macromania"];
218 //Apple Romanian
219
220 case "uk":
221 //ukrainian
222 return ["macukraine"];
223 //Apple Ukrainian
224
225 case "th":
226 //thai
227 return ["macthai"];
228 //Apple Thai
229
230 case "et": //estonian
231
232 case "lt": //lithuanian
233
234 case "lv": //latvian
235
236 case "pl": //polish
237
238 case "hu": //hungarian
239
240 case "cs": //czech
241
242 case "sk":
243 //slovak
244 return ["maccenteuro"];
245 //Apple Macintosh Central Europe
246
247 case "is": //icelandic
248
249 case "fo":
250 //faroese
251 return ["maciceland"];
252 //Apple Icelandic
253
254 case "tr":
255 //turkish
256 return ["macturkish"];
257 //Apple Turkish
258
259 case "hr": //croatian
260
261 case "sl":
262 //slovenian
263 return ["maccroatian"];
264 //Apple Croatian
265
266 default:
267 return ["macroman"];
268 //Apple Macintosh Roman
269 }
270}
271
272function getMacHexCode(str, i, macCodePages) {
273 const code = str.charCodeAt(i);
274
275 if (code < 128) {
276 return code.toString(16);
277 } else if (code < 256) {
278 return iconv().encode(str[i], "macroman").toString("hex");
279 } else {
280 for (let i = 0; i < macCodePages.length; i++) {
281 const result = iconv().encode(str[i], macCodePages[i]).toString("hex");
282
283 if (result !== undefined) {
284 return result;
285 }
286 }
287 }
288
289 return code;
290}
291// __ts-babel@6.0.4
292//# sourceMappingURL=licenseButtons.js.map
\No newline at end of file