electrify-web 1.0.0
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/LICENSE.md +10 -0
- package/README.md +351 -0
- package/app/inject/_placeholder +0 -0
- package/app/lib/main.js +11772 -0
- package/app/lib/main.js.map +1 -0
- package/app/lib/preload.js +338 -0
- package/app/lib/preload.js.map +1 -0
- package/app/lib/static/login.css +57 -0
- package/app/lib/static/login.html +24 -0
- package/app/lib/static/login.js +10 -0
- package/app/nativefier.json +8 -0
- package/app/npm-shrinkwrap.json +1170 -0
- package/app/package.json +25 -0
- package/icon-scripts/convertToIcns +56 -0
- package/icon-scripts/convertToIco +39 -0
- package/icon-scripts/convertToIconset +68 -0
- package/icon-scripts/convertToPng +76 -0
- package/icon-scripts/convertToTrayIcon +32 -0
- package/lib/autologin/index.d.ts +25 -0
- package/lib/autologin/index.js +189 -0
- package/lib/autologin/index.js.map +1 -0
- package/lib/build/buildIcon.d.ts +6 -0
- package/lib/build/buildIcon.js +110 -0
- package/lib/build/buildIcon.js.map +1 -0
- package/lib/build/buildNativefierApp.d.ts +2 -0
- package/lib/build/buildNativefierApp.js +234 -0
- package/lib/build/buildNativefierApp.js.map +1 -0
- package/lib/build/prepareElectronApp.d.ts +15 -0
- package/lib/build/prepareElectronApp.js +220 -0
- package/lib/build/prepareElectronApp.js.map +1 -0
- package/lib/cli.d.ts +6 -0
- package/lib/cli.js +783 -0
- package/lib/cli.js.map +1 -0
- package/lib/config/index.d.ts +87 -0
- package/lib/config/index.js +460 -0
- package/lib/config/index.js.map +1 -0
- package/lib/constants.d.ts +11 -0
- package/lib/constants.js +58 -0
- package/lib/constants.js.map +1 -0
- package/lib/helpers/fsHelpers.d.ts +2 -0
- package/lib/helpers/fsHelpers.js +57 -0
- package/lib/helpers/fsHelpers.js.map +1 -0
- package/lib/helpers/helpers.d.ts +29 -0
- package/lib/helpers/helpers.js +225 -0
- package/lib/helpers/helpers.js.map +1 -0
- package/lib/helpers/iconShellHelpers.d.ts +5 -0
- package/lib/helpers/iconShellHelpers.js +91 -0
- package/lib/helpers/iconShellHelpers.js.map +1 -0
- package/lib/helpers/upgrade/executableHelpers.d.ts +2 -0
- package/lib/helpers/upgrade/executableHelpers.js +173 -0
- package/lib/helpers/upgrade/executableHelpers.js.map +1 -0
- package/lib/helpers/upgrade/plistInfoXMLHelpers.d.ts +2 -0
- package/lib/helpers/upgrade/plistInfoXMLHelpers.js +29 -0
- package/lib/helpers/upgrade/plistInfoXMLHelpers.js.map +1 -0
- package/lib/helpers/upgrade/rceditGet.d.ts +1 -0
- package/lib/helpers/upgrade/rceditGet.js +65 -0
- package/lib/helpers/upgrade/rceditGet.js.map +1 -0
- package/lib/helpers/upgrade/upgrade.d.ts +8 -0
- package/lib/helpers/upgrade/upgrade.js +193 -0
- package/lib/helpers/upgrade/upgrade.js.map +1 -0
- package/lib/infer/browsers/inferChromeVersion.d.ts +1 -0
- package/lib/infer/browsers/inferChromeVersion.js +73 -0
- package/lib/infer/browsers/inferChromeVersion.js.map +1 -0
- package/lib/infer/browsers/inferFirefoxVersion.d.ts +1 -0
- package/lib/infer/browsers/inferFirefoxVersion.js +61 -0
- package/lib/infer/browsers/inferFirefoxVersion.js.map +1 -0
- package/lib/infer/browsers/inferSafariVersion.d.ts +6 -0
- package/lib/infer/browsers/inferSafariVersion.js +96 -0
- package/lib/infer/browsers/inferSafariVersion.js.map +1 -0
- package/lib/infer/inferDefaults.d.ts +33 -0
- package/lib/infer/inferDefaults.js +272 -0
- package/lib/infer/inferDefaults.js.map +1 -0
- package/lib/infer/inferIcon.d.ts +1 -0
- package/lib/infer/inferIcon.js +116 -0
- package/lib/infer/inferIcon.js.map +1 -0
- package/lib/infer/inferOs.d.ts +4 -0
- package/lib/infer/inferOs.js +69 -0
- package/lib/infer/inferOs.js.map +1 -0
- package/lib/infer/inferTitle.d.ts +1 -0
- package/lib/infer/inferTitle.js +56 -0
- package/lib/infer/inferTitle.js.map +1 -0
- package/lib/integration-test.d.ts +1 -0
- package/lib/main.d.ts +11 -0
- package/lib/main.js +18 -0
- package/lib/main.js.map +1 -0
- package/lib/options/asyncConfig.d.ts +5 -0
- package/lib/options/asyncConfig.js +46 -0
- package/lib/options/asyncConfig.js.map +1 -0
- package/lib/options/fields/fields.d.ts +2 -0
- package/lib/options/fields/fields.js +32 -0
- package/lib/options/fields/fields.js.map +1 -0
- package/lib/options/fields/icon.d.ts +9 -0
- package/lib/options/fields/icon.js +106 -0
- package/lib/options/fields/icon.js.map +1 -0
- package/lib/options/fields/name.d.ts +9 -0
- package/lib/options/fields/name.js +59 -0
- package/lib/options/fields/name.js.map +1 -0
- package/lib/options/fields/userAgent.d.ts +10 -0
- package/lib/options/fields/userAgent.js +81 -0
- package/lib/options/fields/userAgent.js.map +1 -0
- package/lib/options/normalizeUrl.d.ts +1 -0
- package/lib/options/normalizeUrl.js +62 -0
- package/lib/options/normalizeUrl.js.map +1 -0
- package/lib/options/optionsMain.d.ts +6 -0
- package/lib/options/optionsMain.js +305 -0
- package/lib/options/optionsMain.js.map +1 -0
- package/lib/presets/index.d.ts +27 -0
- package/lib/presets/index.js +162 -0
- package/lib/presets/index.js.map +1 -0
- package/lib/pwa/index.d.ts +57 -0
- package/lib/pwa/index.js +241 -0
- package/lib/pwa/index.js.map +1 -0
- package/lib/security/index.d.ts +27 -0
- package/lib/security/index.js +202 -0
- package/lib/security/index.js.map +1 -0
- package/lib/updater/index.d.ts +34 -0
- package/lib/updater/index.js +264 -0
- package/lib/updater/index.js.map +1 -0
- package/lib/utils/parseUtils.d.ts +3 -0
- package/lib/utils/parseUtils.js +95 -0
- package/lib/utils/parseUtils.js.map +1 -0
- package/lib/utils/sanitizeFilename.d.ts +1 -0
- package/lib/utils/sanitizeFilename.js +53 -0
- package/lib/utils/sanitizeFilename.js.map +1 -0
- package/lib/wizard/index.d.ts +13 -0
- package/lib/wizard/index.js +252 -0
- package/lib/wizard/index.js.map +1 -0
- package/npm-shrinkwrap.json +8144 -0
- package/package.json +148 -0
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.inferPresetFromUrl = inferPresetFromUrl;
|
|
37
|
+
exports.inferNameFromUrl = inferNameFromUrl;
|
|
38
|
+
exports.getSmartDefaults = getSmartDefaults;
|
|
39
|
+
exports.logSmartDefaults = logSmartDefaults;
|
|
40
|
+
exports.inferFromPWA = inferFromPWA;
|
|
41
|
+
exports.logPWAInfo = logPWAInfo;
|
|
42
|
+
const log = __importStar(require("loglevel"));
|
|
43
|
+
const pwa_1 = require("../pwa");
|
|
44
|
+
/**
|
|
45
|
+
* URL 到预设的映射规则
|
|
46
|
+
*/
|
|
47
|
+
const URL_PRESET_RULES = [
|
|
48
|
+
// 社交媒体
|
|
49
|
+
{
|
|
50
|
+
patterns: [
|
|
51
|
+
/whatsapp\.com/i,
|
|
52
|
+
/telegram\.org/i,
|
|
53
|
+
/discord\.com/i,
|
|
54
|
+
/slack\.com/i,
|
|
55
|
+
/messenger\.com/i,
|
|
56
|
+
/signal\.org/i,
|
|
57
|
+
/wechat\.com/i,
|
|
58
|
+
/weixin\.qq\.com/i,
|
|
59
|
+
],
|
|
60
|
+
preset: 'social',
|
|
61
|
+
},
|
|
62
|
+
// 邮件
|
|
63
|
+
{
|
|
64
|
+
patterns: [
|
|
65
|
+
/mail\.google\.com/i,
|
|
66
|
+
/outlook\.(live|office)\.com/i,
|
|
67
|
+
/mail\.yahoo\.com/i,
|
|
68
|
+
/proton\.me/i,
|
|
69
|
+
/protonmail\.com/i,
|
|
70
|
+
/fastmail\.com/i,
|
|
71
|
+
/mail\.\w+\.\w+/i,
|
|
72
|
+
],
|
|
73
|
+
preset: 'email',
|
|
74
|
+
},
|
|
75
|
+
// 生产力工具
|
|
76
|
+
{
|
|
77
|
+
patterns: [
|
|
78
|
+
/notion\.so/i,
|
|
79
|
+
/trello\.com/i,
|
|
80
|
+
/asana\.com/i,
|
|
81
|
+
/monday\.com/i,
|
|
82
|
+
/clickup\.com/i,
|
|
83
|
+
/airtable\.com/i,
|
|
84
|
+
/coda\.io/i,
|
|
85
|
+
/basecamp\.com/i,
|
|
86
|
+
/todoist\.com/i,
|
|
87
|
+
/evernote\.com/i,
|
|
88
|
+
/onenote\.com/i,
|
|
89
|
+
/docs\.google\.com/i,
|
|
90
|
+
/sheets\.google\.com/i,
|
|
91
|
+
/drive\.google\.com/i,
|
|
92
|
+
/dropbox\.com/i,
|
|
93
|
+
/figma\.com/i,
|
|
94
|
+
/miro\.com/i,
|
|
95
|
+
/canva\.com/i,
|
|
96
|
+
],
|
|
97
|
+
preset: 'productivity',
|
|
98
|
+
},
|
|
99
|
+
// 媒体/流媒体
|
|
100
|
+
{
|
|
101
|
+
patterns: [
|
|
102
|
+
/youtube\.com/i,
|
|
103
|
+
/netflix\.com/i,
|
|
104
|
+
/spotify\.com/i,
|
|
105
|
+
/music\.apple\.com/i,
|
|
106
|
+
/soundcloud\.com/i,
|
|
107
|
+
/twitch\.tv/i,
|
|
108
|
+
/bilibili\.com/i,
|
|
109
|
+
/youku\.com/i,
|
|
110
|
+
/iqiyi\.com/i,
|
|
111
|
+
/disneyplus\.com/i,
|
|
112
|
+
/hulu\.com/i,
|
|
113
|
+
/primevideo\.com/i,
|
|
114
|
+
/hbomax\.com/i,
|
|
115
|
+
/pandora\.com/i,
|
|
116
|
+
/deezer\.com/i,
|
|
117
|
+
/tidal\.com/i,
|
|
118
|
+
],
|
|
119
|
+
preset: 'media',
|
|
120
|
+
},
|
|
121
|
+
// 开发者工具
|
|
122
|
+
{
|
|
123
|
+
patterns: [
|
|
124
|
+
/github\.com/i,
|
|
125
|
+
/gitlab\.com/i,
|
|
126
|
+
/bitbucket\.org/i,
|
|
127
|
+
/jira\./i,
|
|
128
|
+
/atlassian\./i,
|
|
129
|
+
/stackoverflow\.com/i,
|
|
130
|
+
/codepen\.io/i,
|
|
131
|
+
/codesandbox\.io/i,
|
|
132
|
+
/replit\.com/i,
|
|
133
|
+
/vercel\.com/i,
|
|
134
|
+
/netlify\.com/i,
|
|
135
|
+
/heroku\.com/i,
|
|
136
|
+
/aws\.amazon\.com/i,
|
|
137
|
+
/console\.cloud\.google\.com/i,
|
|
138
|
+
/portal\.azure\.com/i,
|
|
139
|
+
/docker\./i,
|
|
140
|
+
/kubernetes\./i,
|
|
141
|
+
],
|
|
142
|
+
preset: 'developer',
|
|
143
|
+
},
|
|
144
|
+
];
|
|
145
|
+
/**
|
|
146
|
+
* 根据 URL 推断最佳预设
|
|
147
|
+
*/
|
|
148
|
+
function inferPresetFromUrl(url) {
|
|
149
|
+
for (const rule of URL_PRESET_RULES) {
|
|
150
|
+
for (const pattern of rule.patterns) {
|
|
151
|
+
if (pattern.test(url)) {
|
|
152
|
+
return rule.preset;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
return undefined;
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* 根据 URL 推断应用名称
|
|
160
|
+
*/
|
|
161
|
+
function inferNameFromUrl(url) {
|
|
162
|
+
const knownNames = {
|
|
163
|
+
'web.whatsapp.com': 'WhatsApp',
|
|
164
|
+
'whatsapp.com': 'WhatsApp',
|
|
165
|
+
'telegram.org': 'Telegram',
|
|
166
|
+
'web.telegram.org': 'Telegram',
|
|
167
|
+
'discord.com': 'Discord',
|
|
168
|
+
'slack.com': 'Slack',
|
|
169
|
+
'mail.google.com': 'Gmail',
|
|
170
|
+
'outlook.live.com': 'Outlook',
|
|
171
|
+
'outlook.office.com': 'Outlook',
|
|
172
|
+
'notion.so': 'Notion',
|
|
173
|
+
'trello.com': 'Trello',
|
|
174
|
+
'github.com': 'GitHub',
|
|
175
|
+
'gitlab.com': 'GitLab',
|
|
176
|
+
'youtube.com': 'YouTube',
|
|
177
|
+
'netflix.com': 'Netflix',
|
|
178
|
+
'spotify.com': 'Spotify',
|
|
179
|
+
'twitter.com': 'Twitter',
|
|
180
|
+
'x.com': 'X',
|
|
181
|
+
'facebook.com': 'Facebook',
|
|
182
|
+
'instagram.com': 'Instagram',
|
|
183
|
+
'linkedin.com': 'LinkedIn',
|
|
184
|
+
'reddit.com': 'Reddit',
|
|
185
|
+
'twitch.tv': 'Twitch',
|
|
186
|
+
'bilibili.com': 'Bilibili',
|
|
187
|
+
'figma.com': 'Figma',
|
|
188
|
+
'canva.com': 'Canva',
|
|
189
|
+
};
|
|
190
|
+
try {
|
|
191
|
+
const hostname = new URL(url).hostname.replace(/^www\./, '');
|
|
192
|
+
return knownNames[hostname];
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
return undefined;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* 智能推荐配置
|
|
200
|
+
*/
|
|
201
|
+
function getSmartDefaults(url) {
|
|
202
|
+
const preset = inferPresetFromUrl(url);
|
|
203
|
+
const name = inferNameFromUrl(url);
|
|
204
|
+
const suggestions = [];
|
|
205
|
+
if (preset) {
|
|
206
|
+
suggestions.push(`Detected app type: using "${preset}" preset`);
|
|
207
|
+
}
|
|
208
|
+
if (name) {
|
|
209
|
+
suggestions.push(`Suggested name: "${name}"`);
|
|
210
|
+
}
|
|
211
|
+
return { preset, name, suggestions };
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* 输出智能推荐信息
|
|
215
|
+
*/
|
|
216
|
+
function logSmartDefaults(url, currentPreset) {
|
|
217
|
+
if (currentPreset)
|
|
218
|
+
return; // 用户已指定预设,不再推荐
|
|
219
|
+
const defaults = getSmartDefaults(url);
|
|
220
|
+
if (defaults.suggestions.length > 0) {
|
|
221
|
+
log.info('💡 Smart suggestions:');
|
|
222
|
+
defaults.suggestions.forEach((s) => log.info(` ${s}`));
|
|
223
|
+
if (defaults.preset) {
|
|
224
|
+
log.info(` Tip: Use --preset ${defaults.preset} for optimized settings\n`);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* 获取 PWA 信息并生成建议选项
|
|
230
|
+
*/
|
|
231
|
+
async function inferFromPWA(url) {
|
|
232
|
+
try {
|
|
233
|
+
const pwaInfo = await (0, pwa_1.fetchPWAInfo)(url);
|
|
234
|
+
const options = (0, pwa_1.pwaInfoToOptions)(pwaInfo, url);
|
|
235
|
+
return {
|
|
236
|
+
name: options.name,
|
|
237
|
+
icon: options.icon,
|
|
238
|
+
backgroundColor: options.backgroundColor,
|
|
239
|
+
hasPWA: !!pwaInfo.manifest,
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
catch (err) {
|
|
243
|
+
log.debug('Failed to fetch PWA info:', err);
|
|
244
|
+
return { hasPWA: false };
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* 输出 PWA 检测信息
|
|
249
|
+
*/
|
|
250
|
+
async function logPWAInfo(url) {
|
|
251
|
+
var _a;
|
|
252
|
+
try {
|
|
253
|
+
const pwaInfo = await (0, pwa_1.fetchPWAInfo)(url);
|
|
254
|
+
if (pwaInfo.manifest) {
|
|
255
|
+
log.info('📱 PWA detected:');
|
|
256
|
+
if (pwaInfo.manifest.name) {
|
|
257
|
+
log.info(` Name: ${pwaInfo.manifest.name}`);
|
|
258
|
+
}
|
|
259
|
+
if (pwaInfo.manifest.display) {
|
|
260
|
+
log.info(` Display: ${pwaInfo.manifest.display}`);
|
|
261
|
+
}
|
|
262
|
+
if ((_a = pwaInfo.manifest.icons) === null || _a === void 0 ? void 0 : _a.length) {
|
|
263
|
+
log.info(` Icons: ${pwaInfo.manifest.icons.length} available`);
|
|
264
|
+
}
|
|
265
|
+
log.info('');
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
catch {
|
|
269
|
+
// 静默失败
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
//# sourceMappingURL=inferDefaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inferDefaults.js","sourceRoot":"","sources":["../../src/infer/inferDefaults.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function inferIcon(targetUrl: string, platform: string): Promise<string | undefined>;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.inferIcon = inferIcon;
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const fs_1 = require("fs");
|
|
42
|
+
const util_1 = require("util");
|
|
43
|
+
const gitCloud = require("gitcloud");
|
|
44
|
+
const page_icon_1 = __importDefault(require("page-icon"));
|
|
45
|
+
const helpers_1 = require("../helpers/helpers");
|
|
46
|
+
const log = __importStar(require("loglevel"));
|
|
47
|
+
const writeFileAsync = (0, util_1.promisify)(fs_1.writeFile);
|
|
48
|
+
const GITCLOUD_SPACE_DELIMITER = '-';
|
|
49
|
+
const GITCLOUD_URL = 'https://nativefier.github.io/nativefier-icons/';
|
|
50
|
+
function getMaxMatchScore(iconWithScores) {
|
|
51
|
+
const score = iconWithScores.reduce((maxScore, currentIcon) => {
|
|
52
|
+
const currentScore = currentIcon.score;
|
|
53
|
+
if (currentScore && currentScore > maxScore) {
|
|
54
|
+
return currentScore;
|
|
55
|
+
}
|
|
56
|
+
return maxScore;
|
|
57
|
+
}, 0);
|
|
58
|
+
log.debug('Max icon match score:', score);
|
|
59
|
+
return score;
|
|
60
|
+
}
|
|
61
|
+
function getMatchingIcons(iconsWithScores, maxScore) {
|
|
62
|
+
return iconsWithScores.filter((item) => item.score === maxScore);
|
|
63
|
+
}
|
|
64
|
+
function mapIconWithMatchScore(cloudIcons, targetUrl) {
|
|
65
|
+
const normalisedTargetUrl = targetUrl.toLowerCase();
|
|
66
|
+
return cloudIcons.map((item) => {
|
|
67
|
+
const itemWords = item.name.split(GITCLOUD_SPACE_DELIMITER);
|
|
68
|
+
const score = itemWords.reduce((currentScore, word) => {
|
|
69
|
+
if (normalisedTargetUrl.includes(word)) {
|
|
70
|
+
return currentScore + 1;
|
|
71
|
+
}
|
|
72
|
+
return currentScore;
|
|
73
|
+
}, 0);
|
|
74
|
+
return { ...item, ext: path.extname(item.url), score };
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
async function inferIconFromStore(targetUrl, platform) {
|
|
78
|
+
log.debug(`Inferring icon from store for ${targetUrl} on ${platform}`);
|
|
79
|
+
const allowedFormats = new Set((0, helpers_1.getAllowedIconFormats)(platform));
|
|
80
|
+
const cloudIcons = await gitCloud(GITCLOUD_URL);
|
|
81
|
+
log.debug(`Got ${cloudIcons.length} icons from gitcloud`);
|
|
82
|
+
const iconWithScores = mapIconWithMatchScore(cloudIcons, targetUrl);
|
|
83
|
+
const maxScore = getMaxMatchScore(iconWithScores);
|
|
84
|
+
if (maxScore === 0) {
|
|
85
|
+
log.debug('No relevant icon in store.');
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
const iconsMatchingScore = getMatchingIcons(iconWithScores, maxScore);
|
|
89
|
+
const iconsMatchingExt = iconsMatchingScore.filter((icon) => { var _a; return allowedFormats.has((_a = icon.ext) !== null && _a !== void 0 ? _a : path.extname(icon.url)); });
|
|
90
|
+
const matchingIcon = iconsMatchingExt[0];
|
|
91
|
+
const iconUrl = matchingIcon && matchingIcon.url;
|
|
92
|
+
if (!iconUrl) {
|
|
93
|
+
log.debug('Could not infer icon from store');
|
|
94
|
+
return undefined;
|
|
95
|
+
}
|
|
96
|
+
return (0, helpers_1.downloadFile)(iconUrl);
|
|
97
|
+
}
|
|
98
|
+
async function inferIcon(targetUrl, platform) {
|
|
99
|
+
log.debug(`Inferring icon for ${targetUrl} on ${platform}`);
|
|
100
|
+
const tmpDirPath = (0, helpers_1.getTempDir)('iconinfer');
|
|
101
|
+
let icon = await inferIconFromStore(targetUrl, platform);
|
|
102
|
+
if (!icon) {
|
|
103
|
+
const ext = platform === 'win32' ? '.ico' : '.png';
|
|
104
|
+
log.debug(`Trying to extract a ${ext} icon from the page.`);
|
|
105
|
+
icon = await (0, page_icon_1.default)(targetUrl, { ext });
|
|
106
|
+
}
|
|
107
|
+
if (!icon) {
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
log.debug(`Got an icon from the page.`);
|
|
111
|
+
const iconPath = path.join(tmpDirPath, `/icon${icon.ext}`);
|
|
112
|
+
log.debug(`Writing ${(icon.data.length / 1024).toFixed(1)} kb icon to ${iconPath}`);
|
|
113
|
+
await writeFileAsync(iconPath, icon.data);
|
|
114
|
+
return iconPath;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=inferIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inferIcon.js","sourceRoot":"","sources":["../../src/infer/inferIcon.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.supportedPlatforms = exports.supportedArchs = void 0;
|
|
37
|
+
exports.inferPlatform = inferPlatform;
|
|
38
|
+
exports.inferArch = inferArch;
|
|
39
|
+
const os = __importStar(require("os"));
|
|
40
|
+
const log = __importStar(require("loglevel"));
|
|
41
|
+
// Ideally we'd get this list directly from electron-packager, but it's not
|
|
42
|
+
// possible to convert a literal type to an array of strings in current TypeScript
|
|
43
|
+
exports.supportedArchs = ['x64', 'armv7l', 'arm64', 'universal'];
|
|
44
|
+
exports.supportedPlatforms = [
|
|
45
|
+
'darwin',
|
|
46
|
+
'linux',
|
|
47
|
+
'mac',
|
|
48
|
+
'mas',
|
|
49
|
+
'osx',
|
|
50
|
+
'win32',
|
|
51
|
+
'windows',
|
|
52
|
+
];
|
|
53
|
+
function inferPlatform() {
|
|
54
|
+
const platform = os.platform();
|
|
55
|
+
if (['darwin', 'linux', 'win32'].includes(platform)) {
|
|
56
|
+
log.debug('Inferred platform', platform);
|
|
57
|
+
return platform;
|
|
58
|
+
}
|
|
59
|
+
throw new Error(`Untested platform ${platform} detected`);
|
|
60
|
+
}
|
|
61
|
+
function inferArch() {
|
|
62
|
+
const arch = os.arch();
|
|
63
|
+
if (!exports.supportedArchs.includes(arch)) {
|
|
64
|
+
throw new Error(`Incompatible architecture ${arch} detected`);
|
|
65
|
+
}
|
|
66
|
+
log.debug('Inferred arch', arch);
|
|
67
|
+
return arch;
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=inferOs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inferOs.js","sourceRoot":"","sources":["../../src/infer/inferOs.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiBA,sCAQC;AAED,8BAOC;AAlCD,uCAAyB;AAEzB,8CAAgC;AAEhC,2EAA2E;AAC3E,kFAAkF;AACrE,QAAA,cAAc,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;AACzD,QAAA,kBAAkB,GAAG;IAChC,QAAQ;IACR,OAAO;IACP,KAAK;IACL,KAAK;IACL,KAAK;IACL,OAAO;IACP,SAAS;CACV,CAAC;AAEF,SAAgB,aAAa;IAC3B,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAC/B,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;QACzC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,WAAW,CAAC,CAAC;AAC5D,CAAC;AAED,SAAgB,SAAS;IACvB,MAAM,IAAI,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC;IACvB,IAAI,CAAC,sBAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,WAAW,CAAC,CAAC;IAChE,CAAC;IACD,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IACjC,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function inferTitle(url: string): Promise<string>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.inferTitle = inferTitle;
|
|
40
|
+
const axios_1 = __importDefault(require("axios"));
|
|
41
|
+
const log = __importStar(require("loglevel"));
|
|
42
|
+
const USER_AGENT = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/15.4 Safari/605.1.15';
|
|
43
|
+
async function inferTitle(url) {
|
|
44
|
+
var _a, _b, _c;
|
|
45
|
+
const { data } = await axios_1.default.get(url, {
|
|
46
|
+
headers: {
|
|
47
|
+
// Fake user agent for pages like http://messenger.com
|
|
48
|
+
'User-Agent': USER_AGENT,
|
|
49
|
+
},
|
|
50
|
+
});
|
|
51
|
+
log.debug(`Fetched ${(data.length / 1024).toFixed(1)} kb page at`, url);
|
|
52
|
+
const inferredTitle = (_c = (_b = (_a = /<\s*title.*?>(?<title>.+?)<\s*\/title\s*?>/i.exec(data)) === null || _a === void 0 ? void 0 : _a.groups) === null || _b === void 0 ? void 0 : _b.title) !== null && _c !== void 0 ? _c : 'Webapp';
|
|
53
|
+
log.debug('Inferred title:', inferredTitle);
|
|
54
|
+
return inferredTitle;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=inferTitle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inferTitle.js","sourceRoot":"","sources":["../../src/infer/inferTitle.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMA,gCAaC;AAnBD,kDAA0B;AAC1B,8CAAgC;AAEhC,MAAM,UAAU,GACd,uHAAuH,CAAC;AAEnH,KAAK,UAAU,UAAU,CAAC,GAAW;;IAC1C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,eAAK,CAAC,GAAG,CAAS,GAAG,EAAE;QAC5C,OAAO,EAAE;YACP,sDAAsD;YACtD,YAAY,EAAE,UAAU;SACzB;KACF,CAAC,CAAC;IACH,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IACxE,MAAM,aAAa,GACjB,MAAA,MAAA,MAAA,6CAA6C,CAAC,IAAI,CAAC,IAAI,CAAC,0CAAE,MAAM,0CAAE,KAAK,mCACvE,QAAQ,CAAC;IACX,GAAG,CAAC,KAAK,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;IAC5C,OAAO,aAAa,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/lib/main.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import 'source-map-support/register';
|
|
2
|
+
import { buildNativefierApp } from './build/buildNativefierApp';
|
|
3
|
+
import { RawOptions } from '../shared/src/options/model';
|
|
4
|
+
export { buildNativefierApp };
|
|
5
|
+
/**
|
|
6
|
+
* Only for compatibility with Nativefier <= 7.7.1 !
|
|
7
|
+
* Use the better, modern async `buildNativefierApp` instead if you can!
|
|
8
|
+
*/
|
|
9
|
+
declare function buildNativefierAppOldCallbackStyle(options: RawOptions, // eslint-disable-line @typescript-eslint/explicit-module-boundary-types
|
|
10
|
+
callback: (err?: Error, result?: string) => void): void;
|
|
11
|
+
export default buildNativefierAppOldCallbackStyle;
|
package/lib/main.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.buildNativefierApp = void 0;
|
|
4
|
+
require("source-map-support/register");
|
|
5
|
+
const buildNativefierApp_1 = require("./build/buildNativefierApp");
|
|
6
|
+
Object.defineProperty(exports, "buildNativefierApp", { enumerable: true, get: function () { return buildNativefierApp_1.buildNativefierApp; } });
|
|
7
|
+
/**
|
|
8
|
+
* Only for compatibility with Nativefier <= 7.7.1 !
|
|
9
|
+
* Use the better, modern async `buildNativefierApp` instead if you can!
|
|
10
|
+
*/
|
|
11
|
+
function buildNativefierAppOldCallbackStyle(options, // eslint-disable-line @typescript-eslint/explicit-module-boundary-types
|
|
12
|
+
callback) {
|
|
13
|
+
(0, buildNativefierApp_1.buildNativefierApp)(options)
|
|
14
|
+
.then((result) => callback(undefined, result))
|
|
15
|
+
.catch((err) => callback(err));
|
|
16
|
+
}
|
|
17
|
+
exports.default = buildNativefierAppOldCallbackStyle;
|
|
18
|
+
//# sourceMappingURL=main.js.map
|
package/lib/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;;AAAA,uCAAqC;AAErC,mEAAgE;AAGvD,mGAHA,uCAAkB,OAGA;AAE3B;;;GAGG;AACH,SAAS,kCAAkC,CACzC,OAAmB,EAAE,wEAAwE;AAC7F,QAAgD;IAEhD,IAAA,uCAAkB,EAAC,OAAO,CAAC;SACxB,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;SAC7C,KAAK,CAAC,CAAC,GAAU,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,kBAAe,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.asyncConfig = asyncConfig;
|
|
37
|
+
const log = __importStar(require("loglevel"));
|
|
38
|
+
const fields_1 = require("./fields/fields");
|
|
39
|
+
/**
|
|
40
|
+
* Takes the options object and infers new values needing async work
|
|
41
|
+
*/
|
|
42
|
+
async function asyncConfig(options) {
|
|
43
|
+
log.debug('\nPerforming async options post-processing.');
|
|
44
|
+
return await (0, fields_1.processOptions)(options);
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=asyncConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asyncConfig.js","sourceRoot":"","sources":["../../src/options/asyncConfig.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,kCAGC;AAXD,8CAAgC;AAEhC,4CAAiD;AAGjD;;GAEG;AACI,KAAK,UAAU,WAAW,CAAC,OAAmB;IACnD,GAAG,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACzD,OAAO,MAAM,IAAA,uBAAc,EAAC,OAAO,CAAC,CAAC;AACvC,CAAC"}
|