1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.getLicenseButtonsFile = getLicenseButtonsFile;
|
7 | exports.getLicenseButtons = getLicenseButtons;
|
8 |
|
9 | function _builderUtil() {
|
10 | const data = require("builder-util");
|
11 |
|
12 | _builderUtil = function () {
|
13 | return data;
|
14 | };
|
15 |
|
16 | return data;
|
17 | }
|
18 |
|
19 | function _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 |
|
29 | function _fsExtra() {
|
30 | const data = require("fs-extra");
|
31 |
|
32 | _fsExtra = function () {
|
33 | return data;
|
34 | };
|
35 |
|
36 | return data;
|
37 | }
|
38 |
|
39 | function iconv() {
|
40 | const data = _interopRequireWildcard(require("iconv-lite"));
|
41 |
|
42 | iconv = function () {
|
43 | return data;
|
44 | };
|
45 |
|
46 | return data;
|
47 | }
|
48 |
|
49 | function _jsYaml() {
|
50 | const data = require("js-yaml");
|
51 |
|
52 | _jsYaml = function () {
|
53 | return data;
|
54 | };
|
55 |
|
56 | return data;
|
57 | }
|
58 |
|
59 | function _dmgUtil() {
|
60 | const data = require("./dmgUtil");
|
61 |
|
62 | _dmgUtil = function () {
|
63 | return data;
|
64 | };
|
65 |
|
66 | return data;
|
67 | }
|
68 |
|
69 | function _licenseDefaultButtons() {
|
70 | const data = require("./licenseDefaultButtons");
|
71 |
|
72 | _licenseDefaultButtons = function () {
|
73 | return data;
|
74 | };
|
75 |
|
76 | return data;
|
77 | }
|
78 |
|
79 | function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
|
80 |
|
81 | function _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 |
|
83 | async function getLicenseButtonsFile(packager) {
|
84 | return (0, _license().getLicenseAssets)((await packager.resourceList).filter(it => {
|
85 | const name = it.toLowerCase();
|
86 |
|
87 | return name.startsWith("licensebuttons_") && (name.endsWith(".json") || name.endsWith(".yml"));
|
88 | }), packager);
|
89 | }
|
90 |
|
91 | async 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 |
|
126 | function 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 |
|
132 | function numberToHex(nb) {
|
133 | return ("0" + nb.toString(16)).slice(-2);
|
134 | }
|
135 |
|
136 | function 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 |
|
162 | function getMacCodePage(lang, langWithRegion) {
|
163 | switch (lang) {
|
164 | case "ja":
|
165 |
|
166 | return ["euc-jp"];
|
167 |
|
168 |
|
169 | case "zh":
|
170 |
|
171 | if (langWithRegion === "zh_CN") {
|
172 | return ["gb2312"];
|
173 | }
|
174 |
|
175 | return ["big5"];
|
176 |
|
177 |
|
178 | case "ko":
|
179 |
|
180 | return ["euc-kr"];
|
181 |
|
182 |
|
183 | case "ar":
|
184 |
|
185 | case "ur":
|
186 |
|
187 | return ["macarabic"];
|
188 |
|
189 |
|
190 | case "he":
|
191 |
|
192 | return ["machebrew"];
|
193 |
|
194 |
|
195 | case "el":
|
196 |
|
197 | case "elc":
|
198 |
|
199 | return ["macgreek"];
|
200 |
|
201 |
|
202 | case "ru":
|
203 |
|
204 | case "be":
|
205 |
|
206 | case "sr":
|
207 |
|
208 | case "bg":
|
209 |
|
210 | case "uz":
|
211 |
|
212 | return ["maccyrillic"];
|
213 |
|
214 |
|
215 | case "ro":
|
216 |
|
217 | return ["macromania"];
|
218 |
|
219 |
|
220 | case "uk":
|
221 |
|
222 | return ["macukraine"];
|
223 |
|
224 |
|
225 | case "th":
|
226 |
|
227 | return ["macthai"];
|
228 |
|
229 |
|
230 | case "et":
|
231 |
|
232 | case "lt":
|
233 |
|
234 | case "lv":
|
235 |
|
236 | case "pl":
|
237 |
|
238 | case "hu":
|
239 |
|
240 | case "cs":
|
241 |
|
242 | case "sk":
|
243 |
|
244 | return ["maccenteuro"];
|
245 |
|
246 |
|
247 | case "is":
|
248 |
|
249 | case "fo":
|
250 |
|
251 | return ["maciceland"];
|
252 |
|
253 |
|
254 | case "tr":
|
255 |
|
256 | return ["macturkish"];
|
257 |
|
258 |
|
259 | case "hr":
|
260 |
|
261 | case "sl":
|
262 |
|
263 | return ["maccroatian"];
|
264 |
|
265 |
|
266 | default:
|
267 | return ["macroman"];
|
268 |
|
269 | }
|
270 | }
|
271 |
|
272 | function 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 |
|
292 |
|
\ | No newline at end of file |