xs-dev 0.19.3 → 0.20.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/build/commands/doctor.js +79 -0
- package/build/extensions/setup-extension.js +4 -1
- package/build/extensions/update-extension.js +4 -1
- package/build/toolbox/build/index.js +62 -4
- package/build/toolbox/prompt/devices.js +4 -1
- package/build/toolbox/setup/esp32/mac.js +33 -7
- package/build/toolbox/setup/esp32.js +4 -6
- package/build/toolbox/setup/esp8266/mac.js +28 -7
- package/build/toolbox/setup/esp8266/windows.js +2 -2
- package/build/toolbox/setup/esp8266.js +15 -25
- package/build/toolbox/setup/fontbm.js +23 -4
- package/build/toolbox/setup/homebrew.js +48 -0
- package/build/toolbox/setup/moddable.js +36 -3
- package/build/toolbox/setup/pico/mac.js +18 -3
- package/build/toolbox/setup/pico.js +26 -15
- package/build/toolbox/setup/wasm.js +22 -8
- package/build/toolbox/setup/windows.js +11 -3
- package/build/toolbox/system/python.js +21 -0
- package/build/types/commands/doctor.d.ts +3 -0
- package/build/types/toolbox/setup/homebrew.d.ts +1 -0
- package/build/types/toolbox/setup/moddable.d.ts +1 -0
- package/build/types/toolbox/setup/pico/mac.d.ts +1 -1
- package/build/types/toolbox/system/python.d.ts +2 -0
- package/build/types/types.d.ts +1 -1
- package/docs/src/config.ts +1 -0
- package/docs/src/pages/en/features/doctor.md +42 -0
- package/package.json +3 -3
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const os_1 = __importDefault(require("os"));
|
|
7
|
+
const devices_1 = require("../toolbox/prompt/devices");
|
|
8
|
+
const moddable_1 = require("../toolbox/setup/moddable");
|
|
9
|
+
const python_1 = require("../toolbox/system/python");
|
|
10
|
+
const command = {
|
|
11
|
+
name: 'doctor',
|
|
12
|
+
alias: ['dr', 'info'],
|
|
13
|
+
description: 'Display the current environment setup information, including valid target devices.',
|
|
14
|
+
run: async ({ print, meta, filesystem, system }) => {
|
|
15
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
|
|
16
|
+
const supportedDevices = [];
|
|
17
|
+
if ((0, moddable_1.moddableExists)()) {
|
|
18
|
+
supportedDevices.push(devices_1.DEVICE_ALIAS[os_1.default.type().toLowerCase()]);
|
|
19
|
+
}
|
|
20
|
+
if (typeof process.env.IDF_PATH === 'string' &&
|
|
21
|
+
filesystem.exists(process.env.IDF_PATH) === 'dir') {
|
|
22
|
+
supportedDevices.push('esp32');
|
|
23
|
+
}
|
|
24
|
+
if (typeof process.env.ESP_BASE === 'string' &&
|
|
25
|
+
filesystem.exists(process.env.ESP_BASE) === 'dir' &&
|
|
26
|
+
filesystem.exists(filesystem.resolve(process.env.ESP_BASE, 'toolchain')) === 'dir' &&
|
|
27
|
+
filesystem.exists(filesystem.resolve(process.env.ESP_BASE, 'ESP8266_RTOS_SDK')) === 'dir' &&
|
|
28
|
+
filesystem.exists(filesystem.resolve(process.env.ESP_BASE, 'esp8266-2.3.0')) === 'dir') {
|
|
29
|
+
supportedDevices.push('esp8266');
|
|
30
|
+
}
|
|
31
|
+
if (((_a = process.env.PATH) !== null && _a !== void 0 ? _a : '').includes('binaryen') &&
|
|
32
|
+
filesystem.exists((_b = process.env.EMSDK) !== null && _b !== void 0 ? _b : '') === 'dir' &&
|
|
33
|
+
filesystem.exists((_c = process.env.EMSDK_NODE) !== null && _c !== void 0 ? _c : '') === 'file' &&
|
|
34
|
+
filesystem.exists((_d = process.env.EMSDK_PYTHON) !== null && _d !== void 0 ? _d : '') === 'file') {
|
|
35
|
+
supportedDevices.push('wasm');
|
|
36
|
+
}
|
|
37
|
+
if (typeof process.env.PICO_SDK_PATH === 'string' &&
|
|
38
|
+
filesystem.exists(process.env.PICO_SDK_PATH) === 'dir' &&
|
|
39
|
+
system.which('picotool') !== null &&
|
|
40
|
+
filesystem.exists((_e = process.env.PIOASM) !== null && _e !== void 0 ? _e : '') === 'file') {
|
|
41
|
+
supportedDevices.push('pico');
|
|
42
|
+
}
|
|
43
|
+
const pythonVersion = (_f = (await (0, python_1.getPythonVersion)())) !== null && _f !== void 0 ? _f : 'Unavailable';
|
|
44
|
+
const pythonPath = (_h = system.which((_g = (0, python_1.detectPython)()) !== null && _g !== void 0 ? _g : '')) !== null && _h !== void 0 ? _h : 'n/a';
|
|
45
|
+
const moddableVersion = (_j = (await (0, moddable_1.getModdableVersion)())) !== null && _j !== void 0 ? _j : 'Not found';
|
|
46
|
+
const moddablePath = (_k = process.env.MODDABLE) !== null && _k !== void 0 ? _k : 'n/a';
|
|
47
|
+
print.info('xs-dev environment info:');
|
|
48
|
+
print.table([
|
|
49
|
+
['CLI Version', meta.version()],
|
|
50
|
+
['OS', os_1.default.type()],
|
|
51
|
+
['Arch', os_1.default.arch()],
|
|
52
|
+
[
|
|
53
|
+
'NodeJS Version',
|
|
54
|
+
`${process.version} (${(_l = system.which('node')) !== null && _l !== void 0 ? _l : 'path not found'})`,
|
|
55
|
+
],
|
|
56
|
+
['Python Version', `${pythonVersion} (${pythonPath})`],
|
|
57
|
+
['Moddable SDK Version', `${moddableVersion} (${moddablePath})`],
|
|
58
|
+
[
|
|
59
|
+
'Supported target devices',
|
|
60
|
+
supportedDevices.length > 0 ? supportedDevices.join(', ') : 'None',
|
|
61
|
+
],
|
|
62
|
+
supportedDevices.includes('esp32')
|
|
63
|
+
? ['ESP32 IDF Directory', String(process.env.IDF_PATH)]
|
|
64
|
+
: [],
|
|
65
|
+
supportedDevices.includes('esp8266')
|
|
66
|
+
? ['ESP8266 Base Directory', String(process.env.ESP_BASE)]
|
|
67
|
+
: [],
|
|
68
|
+
supportedDevices.includes('wasm')
|
|
69
|
+
? ['Wasm EMSDK Directory', String(process.env.ESMDK)]
|
|
70
|
+
: [],
|
|
71
|
+
supportedDevices.includes('pico')
|
|
72
|
+
? ['Pico SDK Directory', String(process.env.PICO_SDK_PATH)]
|
|
73
|
+
: [],
|
|
74
|
+
].filter((tuple) => tuple.length !== 0));
|
|
75
|
+
print.highlight(`\nIf this is related to an error when using the CLI, please create an issue at "https://github.com/hipsterbrown/xs-dev/issues/new" with the above info.`);
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
exports.default = command;
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9jdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL2RvY3Rvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUNBLDRDQUFtQjtBQUNuQix1REFBd0Q7QUFDeEQsd0RBQThFO0FBQzlFLHFEQUF5RTtBQUd6RSxNQUFNLE9BQU8sR0FBbUI7SUFDOUIsSUFBSSxFQUFFLFFBQVE7SUFDZCxLQUFLLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDO0lBQ3JCLFdBQVcsRUFDVCxvRkFBb0Y7SUFDdEYsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7O1FBQ2pELE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFBO1FBRTNCLElBQUksSUFBQSx5QkFBYyxHQUFFLEVBQUU7WUFDcEIsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLHNCQUFZLENBQUMsWUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBWSxDQUFDLENBQUMsQ0FBQTtTQUN2RTtRQUVELElBQ0UsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxRQUFRO1lBQ3hDLFVBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxLQUFLLEVBQ2pEO1lBQ0EsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1NBQy9CO1FBQ0QsSUFDRSxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLFFBQVE7WUFDeEMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxLQUFLLEtBQUs7WUFDakQsVUFBVSxDQUFDLE1BQU0sQ0FDZixVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxDQUN0RCxLQUFL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
|
|
@@ -13,8 +13,11 @@ const pico_1 = __importDefault(require("../toolbox/setup/pico"));
|
|
|
13
13
|
exports.default = async (toolbox) => {
|
|
14
14
|
toolbox.setup = {
|
|
15
15
|
darwin: mac_1.default,
|
|
16
|
+
mac: mac_1.default,
|
|
16
17
|
linux: linux_1.default,
|
|
18
|
+
lin: linux_1.default,
|
|
17
19
|
windows_nt: windows_1.default,
|
|
20
|
+
win: windows_1.default,
|
|
18
21
|
esp: esp8266_1.default,
|
|
19
22
|
esp8266: esp8266_1.default,
|
|
20
23
|
esp32: esp32_1.default,
|
|
@@ -22,4 +25,4 @@ exports.default = async (toolbox) => {
|
|
|
22
25
|
pico: pico_1.default,
|
|
23
26
|
};
|
|
24
27
|
};
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAtZXh0ZW5zaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4dGVuc2lvbnMvc2V0dXAtZXh0ZW5zaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsK0RBQTJDO0FBQzNDLG1FQUErQztBQUMvQyx1RUFBbUQ7QUFDbkQsdUVBQW1EO0FBQ25ELG1FQUErQztBQUMvQyxpRUFBNkM7QUFDN0MsaUVBQTZDO0FBRTdDLGtCQUFlLEtBQUssRUFBRSxPQUFxQixFQUFpQixFQUFFO0lBQzVELE9BQU8sQ0FBQyxLQUFLLEdBQUc7UUFDZCxNQUFNLEVBQUUsYUFBUTtRQUNoQixHQUFHLEVBQUUsYUFBUTtRQUNiLEtBQUssRUFBRSxlQUFVO1FBQ2pCLEdBQUcsRUFBRSxlQUFVO1FBQ2YsVUFBVSxFQUFFLGlCQUFZO1FBQ3hCLEdBQUcsRUFBRSxpQkFBWTtRQUNqQixHQUFHLEVBQUUsaUJBQVk7UUFDakIsT0FBTyxFQUFFLGlCQUFZO1FBQ3JCLEtBQUssRUFBRSxlQUFVO1FBQ2pCLElBQUksRUFBRSxjQUFTO1FBQ2YsSUFBSSxFQUFFLGNBQVM7S0FDaEIsQ0FBQTtBQUNILENBQUMsQ0FBQSJ9
|
|
@@ -13,8 +13,11 @@ const pico_1 = __importDefault(require("../toolbox/update/pico"));
|
|
|
13
13
|
exports.default = async (toolbox) => {
|
|
14
14
|
toolbox.update = {
|
|
15
15
|
darwin: mac_1.default,
|
|
16
|
+
mac: mac_1.default,
|
|
16
17
|
linux: linux_1.default,
|
|
18
|
+
lin: linux_1.default,
|
|
17
19
|
windows_nt: windows_1.default,
|
|
20
|
+
win: windows_1.default,
|
|
18
21
|
esp: esp8266_1.default,
|
|
19
22
|
esp8266: esp8266_1.default,
|
|
20
23
|
esp32: esp32_1.default,
|
|
@@ -22,4 +25,4 @@ exports.default = async (toolbox) => {
|
|
|
22
25
|
pico: pico_1.default,
|
|
23
26
|
};
|
|
24
27
|
};
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
28
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLWV4dGVuc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leHRlbnNpb25zL3VwZGF0ZS1leHRlbnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxnRUFBNkM7QUFDN0Msb0VBQWlEO0FBQ2pELHdFQUFxRDtBQUNyRCx3RUFBcUQ7QUFDckQsb0VBQWlEO0FBQ2pELGtFQUErQztBQUMvQyxrRUFBK0M7QUFFL0Msa0JBQWUsS0FBSyxFQUFFLE9BQXFCLEVBQWlCLEVBQUU7SUFDNUQsT0FBTyxDQUFDLE1BQU0sR0FBRztRQUNmLE1BQU0sRUFBRSxhQUFTO1FBQ2pCLEdBQUcsRUFBRSxhQUFTO1FBQ2QsS0FBSyxFQUFFLGVBQVc7UUFDbEIsR0FBRyxFQUFFLGVBQVc7UUFDaEIsVUFBVSxFQUFFLGlCQUFhO1FBQ3pCLEdBQUcsRUFBRSxpQkFBYTtRQUNsQixHQUFHLEVBQUUsaUJBQWE7UUFDbEIsT0FBTyxFQUFFLGlCQUFhO1FBQ3RCLEtBQUssRUFBRSxlQUFXO1FBQ2xCLElBQUksRUFBRSxjQUFVO1FBQ2hCLElBQUksRUFBRSxjQUFVO0tBQ2pCLENBQUE7QUFDSCxDQUFDLENBQUEifQ==
|
|
@@ -4,12 +4,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.build = void 0;
|
|
7
|
+
const os_1 = require("os");
|
|
7
8
|
const serve_handler_1 = __importDefault(require("serve-handler"));
|
|
8
9
|
const http_1 = require("http");
|
|
9
10
|
const gluegun_1 = require("gluegun");
|
|
10
11
|
const choices_1 = require("../prompt/choices");
|
|
12
|
+
const moddable_1 = require("../setup/moddable");
|
|
13
|
+
const devices_1 = require("../prompt/devices");
|
|
11
14
|
async function build({ listDevices, port, example, listExamples, projectPath, targetPlatform, mode, deployStatus, outputDir, }) {
|
|
12
|
-
var _a;
|
|
15
|
+
var _a, _b, _c, _d, _e, _f;
|
|
16
|
+
const OS = (0, os_1.type)().toLowerCase();
|
|
17
|
+
if (!(0, moddable_1.moddableExists)()) {
|
|
18
|
+
gluegun_1.print.error(`Moddable tooling required. Run 'xs-dev setup --device ${devices_1.DEVICE_ALIAS[OS]}' before trying again.`);
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
13
21
|
if (listDevices) {
|
|
14
22
|
const choices = [
|
|
15
23
|
'esp',
|
|
@@ -22,10 +30,13 @@ async function build({ listDevices, port, example, listExamples, projectPath, ta
|
|
|
22
30
|
'esp32/nodemcu',
|
|
23
31
|
'esp32/m5stack',
|
|
24
32
|
'esp32/m5stack_core2',
|
|
25
|
-
'esp32/
|
|
33
|
+
'esp32/m5stack_fire',
|
|
34
|
+
'esp32/m5stick_c',
|
|
35
|
+
'esp32/m5stick_cplus',
|
|
26
36
|
'esp32/m5atom_echo',
|
|
27
37
|
'esp32/m5atom_lite',
|
|
28
38
|
'esp32/m5atom_matrix',
|
|
39
|
+
'esp32/m5atom_u',
|
|
29
40
|
'esp32/m5paper',
|
|
30
41
|
'esp32/m5core_ink',
|
|
31
42
|
'esp32/heltec_wifi_kit_32',
|
|
@@ -35,11 +46,24 @@ async function build({ listDevices, port, example, listExamples, projectPath, ta
|
|
|
35
46
|
'esp32/kaluga',
|
|
36
47
|
'esp32/saola_wroom',
|
|
37
48
|
'esp32/saola_wrover',
|
|
49
|
+
'esp32/esp32s3',
|
|
50
|
+
'esp32/esp32c3',
|
|
51
|
+
'esp32/c3_32s_kit',
|
|
52
|
+
'esp32/c3_32s_kit_2m',
|
|
38
53
|
'wasm',
|
|
39
54
|
'pico',
|
|
55
|
+
'pico/pico_w',
|
|
40
56
|
'pico/ili9341',
|
|
41
57
|
'pico/pico_display',
|
|
42
58
|
'pico/pico_display_2',
|
|
59
|
+
'pico/pico_lcd_1.3',
|
|
60
|
+
'pico/itsybitsy',
|
|
61
|
+
'pico/lilygo_t_display',
|
|
62
|
+
'pico/picosystem',
|
|
63
|
+
'pico/qtpy',
|
|
64
|
+
'pico/tiny2040',
|
|
65
|
+
'pico/xiao_rp2040',
|
|
66
|
+
'pico/pro_micro',
|
|
43
67
|
'simulator/moddable_one',
|
|
44
68
|
'simulator/moddable_two',
|
|
45
69
|
'simulator/moddable_three',
|
|
@@ -65,9 +89,43 @@ async function build({ listDevices, port, example, listExamples, projectPath, ta
|
|
|
65
89
|
process.exit(0);
|
|
66
90
|
}
|
|
67
91
|
}
|
|
92
|
+
if (targetPlatform !== '') {
|
|
93
|
+
if (targetPlatform.includes('esp32')) {
|
|
94
|
+
if (typeof process.env.IDF_PATH !== 'string' ||
|
|
95
|
+
gluegun_1.filesystem.exists(process.env.IDF_PATH) !== 'dir') {
|
|
96
|
+
gluegun_1.print.error('The current environment does not appear to be set up for the ESP32 build target. Please run `xs-dev setup --device esp32` before trying again.');
|
|
97
|
+
process.exit(1);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
else if (targetPlatform.includes('esp')) {
|
|
101
|
+
if (typeof process.env.ESP_BASE !== 'string' ||
|
|
102
|
+
gluegun_1.filesystem.exists(process.env.ESP_BASE) !== 'dir') {
|
|
103
|
+
gluegun_1.print.error('The current environment does not appear to be set up for the ESP8266 build target. Please run `xs-dev setup --device esp8266` before trying again.');
|
|
104
|
+
process.exit(1);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
if (targetPlatform.includes('wasm')) {
|
|
108
|
+
if (!((_a = process.env.PATH) !== null && _a !== void 0 ? _a : '').includes('binaryen') ||
|
|
109
|
+
gluegun_1.filesystem.exists((_b = process.env.EMSDK) !== null && _b !== void 0 ? _b : '') !== 'dir' ||
|
|
110
|
+
gluegun_1.filesystem.exists((_c = process.env.EMSDK_NODE) !== null && _c !== void 0 ? _c : '') !== 'file' ||
|
|
111
|
+
gluegun_1.filesystem.exists((_d = process.env.EMSDK_PYTHON) !== null && _d !== void 0 ? _d : '') !== 'file') {
|
|
112
|
+
gluegun_1.print.error('The current environment does not appear to be set up for the wasm build target. Please run `xs-dev setup --device wasm` before trying again.');
|
|
113
|
+
process.exit(1);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
if (targetPlatform.includes('pico')) {
|
|
117
|
+
if (typeof process.env.PICO_SDK_PATH !== 'string' ||
|
|
118
|
+
gluegun_1.filesystem.exists(process.env.PICO_SDK_PATH) !== 'dir' ||
|
|
119
|
+
gluegun_1.system.which('picotool') === null ||
|
|
120
|
+
gluegun_1.filesystem.exists((_e = process.env.PIOASM) !== null && _e !== void 0 ? _e : '') !== 'file') {
|
|
121
|
+
gluegun_1.print.error('The current environment does not appear to be set up for the pico build target. Please run `xs-dev setup --device pico` before trying again.');
|
|
122
|
+
process.exit(1);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
68
126
|
if (listExamples) {
|
|
69
127
|
const exampleProjectPath = gluegun_1.filesystem.resolve(String(process.env.MODDABLE), 'examples');
|
|
70
|
-
const examples = (
|
|
128
|
+
const examples = (_f = gluegun_1.filesystem.inspectTree(exampleProjectPath)) === null || _f === void 0 ? void 0 : _f.children;
|
|
71
129
|
const choices = examples !== undefined
|
|
72
130
|
? examples.map((example) => (0, choices_1.collectChoicesFromTree)(example)).flat()
|
|
73
131
|
: [];
|
|
@@ -142,4 +200,4 @@ async function build({ listDevices, port, example, listExamples, projectPath, ta
|
|
|
142
200
|
}
|
|
143
201
|
}
|
|
144
202
|
exports.build = build;
|
|
145
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
203
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbGJveC9idWlsZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyQkFBeUM7QUFDekMsa0VBQW1DO0FBQ25DLCtCQUFtQztBQUNuQyxxQ0FBMkQ7QUFDM0QsK0NBQTBEO0FBQzFELGdEQUFrRDtBQUNsRCwrQ0FBZ0Q7QUFpQnpDLEtBQUssVUFBVSxLQUFLLENBQUMsRUFDMUIsV0FBVyxFQUNYLElBQUksRUFDSixPQUFPLEVBQ1AsWUFBWSxFQUNaLFdBQVcsRUFDWCxjQUFjLEVBQ2QsSUFBSSxFQUNKLFlBQVksRUFDWixTQUFTLEdBQ0M7O0lBQ1YsTUFBTSxFQUFFLEdBQUcsSUFBQSxTQUFZLEdBQUUsQ0FBQyxXQUFXLEVBQVksQ0FBQTtJQUVqRCxJQUFJLENBQUMsSUFBQSx5QkFBYyxHQUFFLEVBQUU7UUFDckIsZUFBSyxDQUFDLEtBQUssQ0FDVCx5REFBeUQsc0JBQVksQ0FBQyxFQUFFLENBQUMsd0JBQXdCLENBQ2xHLENBQUE7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQ2hCO0lBRUQsSUFBSSxXQUFXLEVBQUU7UUFDZixNQUFNLE9BQU8sR0FBRztZQUNkLEtBQUs7WUFDTCxtQkFBbUI7WUFDbkIsa0JBQWtCO1lBQ2xCLG9CQUFvQjtZQUNwQixhQUFhO1lBQ2IsT0FBTztZQUNQLG9CQUFvQjtZQUNwQixlQUFlO1lBQ2YsZUFBZTtZQUNmLHFCQUFxQjtZQUNyQixvQkFBb0I7WUFDcEIsaUJBQWlCO1lBQ2pCLHFCQUFxQjtZQUNyQixtQkFBbUI7WUFDbkIsbUJBQW1CO1lBQ25CLHFCQUFxQjtZQUNyQixnQkFBZ0I7WUFDaEIsZUFBZTtZQUNmLGtCQUFrQjtZQUNsQiwwQkFBMEI7WUFDMUIsbUJBQW1CO1lBQ25CLHdCQUF3QjtZQUN4QixrQkFBa0I7WUFDbEIsY0FBYztZQUNkLG1CQUFtQjtZQUNuQixv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
|
|
@@ -4,11 +4,14 @@ exports.DEVICE_ALIAS = void 0;
|
|
|
4
4
|
exports.DEVICE_ALIAS = Object.freeze({
|
|
5
5
|
esp8266: 'esp',
|
|
6
6
|
darwin: 'mac',
|
|
7
|
+
mac: 'mac',
|
|
7
8
|
windows_nt: 'win',
|
|
9
|
+
win: 'win',
|
|
8
10
|
linux: 'lin',
|
|
11
|
+
lin: 'lin',
|
|
9
12
|
esp: 'esp',
|
|
10
13
|
esp32: 'esp32',
|
|
11
14
|
wasm: 'wasm',
|
|
12
15
|
pico: 'pico',
|
|
13
16
|
});
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV2aWNlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90b29sYm94L3Byb21wdC9kZXZpY2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVhLFFBQUEsWUFBWSxHQUF1QyxNQUFNLENBQUMsTUFBTSxDQUFDO0lBQzVFLE9BQU8sRUFBRSxLQUFLO0lBQ2QsTUFBTSxFQUFFLEtBQUs7SUFDYixHQUFHLEVBQUUsS0FBSztJQUNWLFVBQVUsRUFBRSxLQUFLO0lBQ2pCLEdBQUcsRUFBRSxLQUFLO0lBQ1YsS0FBSyxFQUFFLEtBQUs7SUFDWixHQUFHLEVBQUUsS0FBSztJQUNWLEdBQUcsRUFBRSxLQUFLO0lBQ1YsS0FBSyxFQUFFLE9BQU87SUFDZCxJQUFJLEVBQUUsTUFBTTtJQUNaLElBQUksRUFBRSxNQUFNO0NBQ2IsQ0FBQyxDQUFBIn0=
|
|
@@ -2,35 +2,61 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.installDeps = void 0;
|
|
4
4
|
const gluegun_1 = require("gluegun");
|
|
5
|
+
const homebrew_1 = require("../homebrew");
|
|
5
6
|
// brew install python3, cmake, ninja, dfu-util
|
|
6
7
|
async function installDeps(spinner) {
|
|
8
|
+
spinner.stop();
|
|
9
|
+
try {
|
|
10
|
+
await (0, homebrew_1.ensureHomebrew)();
|
|
11
|
+
}
|
|
12
|
+
catch (error) {
|
|
13
|
+
if (error instanceof Error) {
|
|
14
|
+
gluegun_1.print.info(`${error.message} python 3, cmake, ninja, dfu-util`);
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
7
18
|
if (gluegun_1.system.which('python') === null ||
|
|
8
19
|
// get python verion, check if v3
|
|
9
20
|
gluegun_1.semver.satisfies((await gluegun_1.system.exec('python --version', { trim: true }))
|
|
10
21
|
.toString()
|
|
11
22
|
.split(' ')
|
|
12
23
|
.pop(), '>= 3.x.x')) {
|
|
13
|
-
|
|
24
|
+
const maybePython3Path = gluegun_1.system.which('python3');
|
|
25
|
+
if (typeof maybePython3Path !== 'string') {
|
|
26
|
+
try {
|
|
27
|
+
await gluegun_1.system.exec('brew install python', { shell: process.env.SHELL });
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
if (error instanceof Error && error.message.includes('xcode-select')) {
|
|
31
|
+
gluegun_1.print.error('Apple Command Line Tools must be installed in order to install python from Homebrew. Please run `xcode-select --install` before trying again.');
|
|
32
|
+
process.exit(1);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
14
36
|
}
|
|
15
37
|
if (gluegun_1.system.which('cmake') === null) {
|
|
16
|
-
await gluegun_1.system.exec('brew install cmake');
|
|
38
|
+
await gluegun_1.system.exec('brew install cmake', { shell: process.env.SHELL });
|
|
17
39
|
}
|
|
18
40
|
if (gluegun_1.system.which('ninja') === null) {
|
|
19
|
-
await gluegun_1.system.exec('brew install ninja');
|
|
41
|
+
await gluegun_1.system.exec('brew install ninja', { shell: process.env.SHELL });
|
|
20
42
|
}
|
|
21
43
|
if (gluegun_1.system.which('dfu-util') === null) {
|
|
22
|
-
await gluegun_1.system.exec('brew install dfu-util');
|
|
44
|
+
await gluegun_1.system.exec('brew install dfu-util', { shell: process.env.SHELL });
|
|
23
45
|
}
|
|
24
46
|
// 4. install pip, if needed
|
|
25
47
|
if (gluegun_1.system.which('pip3') === null) {
|
|
26
48
|
spinner.start('Installing pip3');
|
|
27
|
-
await gluegun_1.system.exec('python3 -m ensurepip --user'
|
|
49
|
+
await gluegun_1.system.exec('python3 -m ensurepip --user', {
|
|
50
|
+
shell: process.env.SHELL,
|
|
51
|
+
});
|
|
28
52
|
spinner.succeed();
|
|
29
53
|
}
|
|
30
54
|
// 5. pip install pyserial, if needed
|
|
31
55
|
spinner.start('Installing pyserial through pip3');
|
|
32
|
-
await gluegun_1.system.exec('python3 -m pip install pyserial'
|
|
56
|
+
await gluegun_1.system.exec('python3 -m pip install pyserial', {
|
|
57
|
+
shell: process.env.SHELL,
|
|
58
|
+
});
|
|
33
59
|
spinner.succeed();
|
|
34
60
|
}
|
|
35
61
|
exports.installDeps = installDeps;
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
62
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rvb2xib3gvc2V0dXAvZXNwMzIvbWFjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFDQUErQztBQUUvQywwQ0FBNEM7QUFFNUMsK0NBQStDO0FBQ3hDLEtBQUssVUFBVSxXQUFXLENBQy9CLE9BQXlDO0lBRXpDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUVkLElBQUk7UUFDRixNQUFNLElBQUEseUJBQWMsR0FBRSxDQUFBO0tBQ3ZCO0lBQUMsT0FBTyxLQUFjLEVBQUU7UUFDdkIsSUFBSSxLQUFLLFlBQVksS0FBSyxFQUFFO1lBQzFCLGVBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxLQUFLLENBQUMsT0FBTyxtQ0FBbUMsQ0FBQyxDQUFBO1lBQy9ELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDaEI7S0FDRjtJQUVELElBQ0UsZ0JBQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSTtRQUMvQixpQ0FBaUM7UUFDakMsZ0JBQU0sQ0FBQyxTQUFTLENBQ2QsQ0FBQyxNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7YUFDcEQsUUFBUSxFQUFFO2FBQ1YsS0FBSyxDQUFDLEdBQUcsQ0FBQzthQUNWLEdBQUcsRUFBRSxFQUNSLFVBQVUsQ0FDWCxFQUNEO1FBQ0EsTUFBTSxnQkFBZ0IsR0FBRyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUVoRCxJQUFJLE9BQU8sZ0JBQWdCLEtBQUssUUFBUSxFQUFFO1lBQ3hDLElBQUk7Z0JBQ0YsTUFBTSxnQkFBTSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUE7YUFDdkU7WUFBQyxPQUFPLEtBQWMsRUFBRTtnQkFDdkIsSUFBSSxLQUFLLFlBQVksS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFO29CQUNwRSxlQUFLLENBQUMsS0FBSyxDQUNULCtJQUErSSxDQUNoSixDQUFBO29CQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7aUJBQ2hCO2FBQ0Y7U0FDRjtLQUNGO0lBRUQsSUFBSSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDbEMsTUFBTSxnQkFBTSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUE7S0FDdEU7SUFFRCxJQUFJLGdCQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRTtRQUNsQyxNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQTtLQUN0RTtJQUVELElBQUksZ0JBQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ3JDLE1BQU0sZ0JBQU0sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFBO0tBQ3pFO0lBRUQsNEJBQTRCO0lBQzVCLElBQUksZ0JBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ2pDLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtRQUNoQyxNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLDZCQUE2QixFQUFFO1lBQy9DLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUs7U0FDekIsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO0tBQ2xCO0lBRUQscUNBQXFDO0lBQ3JDLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQTtJQUNqRCxNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLGlDQUFpQyxFQUFFO1FBQ25ELEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUs7S0FDekIsQ0FBQyxDQUFBO0lBQ0YsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO0FBQ25CLENBQUM7QUFwRUQsa0NBb0VDIn0=
|
|
@@ -26,15 +26,16 @@ async function default_1() {
|
|
|
26
26
|
spinner.fail('Moddable tooling required. Run `xs-dev setup` before trying again.');
|
|
27
27
|
process.exit(1);
|
|
28
28
|
}
|
|
29
|
-
if (isWindows)
|
|
29
|
+
if (isWindows) {
|
|
30
30
|
await (0, windows_2.ensureModdableCommandPrompt)(spinner);
|
|
31
|
+
}
|
|
31
32
|
// 1. ensure ~/.local/share/esp32 directory
|
|
32
33
|
spinner.info('Ensuring esp32 install directory');
|
|
33
34
|
gluegun_1.filesystem.dir(ESP32_DIR);
|
|
34
35
|
// 2. clone esp-idf into ~/.local/share/esp32/esp-idf
|
|
35
36
|
if (gluegun_1.filesystem.exists(IDF_PATH) === false) {
|
|
36
37
|
spinner.start('Cloning esp-idf repo');
|
|
37
|
-
await gluegun_1.system.spawn(`git clone -b ${ESP_BRANCH} --recursive ${ESP_IDF_REPO} ${IDF_PATH}`);
|
|
38
|
+
await gluegun_1.system.spawn(`git clone --depth 1 --single-branch -b ${ESP_BRANCH} --recursive ${ESP_IDF_REPO} ${IDF_PATH}`);
|
|
38
39
|
spinner.succeed();
|
|
39
40
|
}
|
|
40
41
|
// 3. Install build and run dependencies
|
|
@@ -85,9 +86,6 @@ async function default_1() {
|
|
|
85
86
|
else {
|
|
86
87
|
spinner.info('Sourcing esp-idf environment');
|
|
87
88
|
await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `source $IDF_PATH/export.sh 1> /dev/null`);
|
|
88
|
-
await gluegun_1.system.exec('source $IDF_PATH/export.sh', {
|
|
89
|
-
shell: process.env.SHELL,
|
|
90
|
-
});
|
|
91
89
|
}
|
|
92
90
|
spinner.succeed(`
|
|
93
91
|
Successfully set up esp32 platform support for Moddable!
|
|
@@ -96,4 +94,4 @@ async function default_1() {
|
|
|
96
94
|
`);
|
|
97
95
|
}
|
|
98
96
|
exports.default = default_1;
|
|
99
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
97
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNwMzIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbGJveC9zZXR1cC9lc3AzMi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFDQUFtRDtBQUNuRCwyQkFBeUM7QUFDekMsMkNBQTREO0FBQzVELHlDQUEyQztBQUMzQyxnRUFBdUM7QUFDdkMscUNBQTJEO0FBQzNELHlDQUErRDtBQUMvRCw2Q0FBK0Q7QUFDL0QsdUNBQStEO0FBRWhELEtBQUs7SUFDbEIsTUFBTSxFQUFFLEdBQUcsSUFBQSxTQUFZLEdBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUN2QyxNQUFNLFNBQVMsR0FBRyxFQUFFLEtBQUssWUFBWSxDQUFBO0lBQ3JDLE1BQU0sWUFBWSxHQUFHLDBDQUEwQyxDQUFBO0lBQy9ELE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQTtJQUMzQixNQUFNLFNBQVMsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyx1QkFBVyxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzFELE1BQU0sUUFBUSxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQTtJQUV6RCxNQUFNLE9BQU8sR0FBRyxlQUFLLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFBO0lBRXZDLDRCQUE0QjtJQUM1QixJQUFJLENBQUMsSUFBQSx5QkFBYyxHQUFFLEVBQUU7UUFDckIsT0FBTyxDQUFDLElBQUksQ0FDVixvRUFBb0UsQ0FDckUsQ0FBQTtRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDaEI7SUFFRCxJQUFJLFNBQVMsRUFBRTtRQUNiLE1BQU0sSUFBQSxxQ0FBMkIsRUFBQyxPQUFPLENBQUMsQ0FBQTtLQUMzQztJQUVELDJDQUEyQztJQUMzQyxPQUFPLENBQUMsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLENBQUE7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
|
|
@@ -2,20 +2,41 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.installDeps = void 0;
|
|
4
4
|
const gluegun_1 = require("gluegun");
|
|
5
|
+
const homebrew_1 = require("../homebrew");
|
|
5
6
|
async function installDeps(spinner) {
|
|
7
|
+
try {
|
|
8
|
+
await (0, homebrew_1.ensureHomebrew)();
|
|
9
|
+
}
|
|
10
|
+
catch (error) {
|
|
11
|
+
if (error instanceof Error) {
|
|
12
|
+
gluegun_1.print.info(`${error.message} python`);
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
6
16
|
if (gluegun_1.system.which('python') === null) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
17
|
+
const maybePython3Path = gluegun_1.system.which('python3');
|
|
18
|
+
if (typeof maybePython3Path !== 'string') {
|
|
19
|
+
spinner.start('Installing python from homebrew');
|
|
20
|
+
try {
|
|
21
|
+
await gluegun_1.system.exec('brew install python', { shell: process.env.SHELL });
|
|
22
|
+
spinner.succeed();
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
if (error instanceof Error && error.message.includes('xcode-select')) {
|
|
26
|
+
spinner.fail('Apple Command Line Tools must be installed in order to install python from Homebrew. Please run `xcode-select --install` before trying again.');
|
|
27
|
+
process.exit(1);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
10
31
|
}
|
|
11
|
-
if (gluegun_1.system.which('pip') === null) {
|
|
32
|
+
if (gluegun_1.system.which('pip') === null || gluegun_1.system.which('pip3') === null) {
|
|
12
33
|
spinner.start('Installing pip through ensurepip');
|
|
13
|
-
await gluegun_1.system.exec('
|
|
34
|
+
await gluegun_1.system.exec('python3 -m ensurepip --user');
|
|
14
35
|
spinner.succeed();
|
|
15
36
|
}
|
|
16
37
|
spinner.start('Installing pyserial through pip');
|
|
17
|
-
await gluegun_1.system.exec('
|
|
38
|
+
await gluegun_1.system.exec('python3 -m pip install pyserial');
|
|
18
39
|
spinner.succeed();
|
|
19
40
|
}
|
|
20
41
|
exports.installDeps = installDeps;
|
|
21
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Rvb2xib3gvc2V0dXAvZXNwODI2Ni9tYWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQXVDO0FBRXZDLDBDQUE0QztBQUVyQyxLQUFLLFVBQVUsV0FBVyxDQUMvQixPQUF5QztJQUV6QyxJQUFJO1FBQ0YsTUFBTSxJQUFBLHlCQUFjLEdBQUUsQ0FBQTtLQUN2QjtJQUFDLE9BQU8sS0FBYyxFQUFFO1FBQ3ZCLElBQUksS0FBSyxZQUFZLEtBQUssRUFBRTtZQUMxQixlQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsS0FBSyxDQUFDLE9BQU8sU0FBUyxDQUFDLENBQUE7WUFDckMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtTQUNoQjtLQUNGO0lBRUQsSUFBSSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDbkMsTUFBTSxnQkFBZ0IsR0FBRyxnQkFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUVoRCxJQUFJLE9BQU8sZ0JBQWdCLEtBQUssUUFBUSxFQUFFO1lBQ3hDLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQTtZQUNoRCxJQUFJO2dCQUNGLE1BQU0sZ0JBQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLEVBQUUsRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFBO2dCQUN0RSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7YUFDbEI7WUFBQyxPQUFPLEtBQWMsRUFBRTtnQkFDdkIsSUFBSSxLQUFLLFlBQVksS0FBSyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxFQUFFO29CQUNwRSxPQUFPLENBQUMsSUFBSSxDQUNWLCtJQUErSSxDQUNoSixDQUFBO29CQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7aUJBQ2hCO2FBQ0Y7U0FDRjtLQUNGO0lBRUQsSUFBSSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksZ0JBQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ2pFLE9BQU8sQ0FBQyxLQUFLLENBQUMsa0NBQWtDLENBQUMsQ0FBQTtRQUNqRCxNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLDZCQUE2QixDQUFDLENBQUE7UUFDaEQsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO0tBQ2xCO0lBRUQsT0FBTyxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFBO0lBQ2hELE1BQU0sZ0JBQU0sQ0FBQyxJQUFJLENBQUMsaUNBQWlDLENBQUMsQ0FBQTtJQUNwRCxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7QUFDbkIsQ0FBQztBQXhDRCxrQ0F3Q0MifQ==
|
|
@@ -14,7 +14,7 @@ const constants_1 = require("../constants");
|
|
|
14
14
|
const finishedPromise = (0, util_1.promisify)(stream_1.finished);
|
|
15
15
|
const ESP_TOOL = 'https://github.com/igrr/esptool-ck/releases/download/0.4.13/esptool-0.4.13-win32.zip';
|
|
16
16
|
const ESP_TOOL_VERSION = 'esptool-0.4.13-win32';
|
|
17
|
-
const CYGWIN =
|
|
17
|
+
const CYGWIN = `https://github.com/Moddable-OpenSource/tools/releases/download/v1.0.0/cygwin.win32.zip`;
|
|
18
18
|
async function installPython(spinner) {
|
|
19
19
|
if (gluegun_1.system.which('python') === null) {
|
|
20
20
|
// For some reason, system.which does not work with winget. This is a workaround for now.
|
|
@@ -81,4 +81,4 @@ async function installDeps(spinner, ESP_DIR) {
|
|
|
81
81
|
spinner.succeed();
|
|
82
82
|
}
|
|
83
83
|
exports.installDeps = installDeps;
|
|
84
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90b29sYm94L3NldHVwL2VzcDgyNjYvd2luZG93cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxxQ0FBbUQ7QUFDbkQsbUNBQWlDO0FBQ2pDLGtEQUF5QjtBQUV6QiwrQ0FBb0Q7QUFDcEQsK0JBQWdDO0FBQ2hDLHdDQUE4QztBQUM5Qyw0Q0FBMEM7QUFFMUMsTUFBTSxlQUFlLEdBQUcsSUFBQSxnQkFBUyxFQUFDLGlCQUFRLENBQUMsQ0FBQTtBQUUzQyxNQUFNLFFBQVEsR0FDWixzRkFBc0YsQ0FBQTtBQUN4RixNQUFNLGdCQUFnQixHQUFHLHNCQUFzQixDQUFBO0FBQy9DLE1BQU0sTUFBTSxHQUFHLHdGQUF3RixDQUFBO0FBRWhHLEtBQUssVUFBVSxhQUFhLENBQ2pDLE9BQXlDO0lBRXpDLElBQUksZ0JBQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ25DLHlGQUF5RjtRQUN6RixJQUFJO1lBQ0YsTUFBTSxnQkFBTSxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQTtTQUNsQztRQUFDLE9BQU8sS0FBSyxFQUFFO1lBQ2QsZUFBSyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFBO1lBQ2xDLGVBQUssQ0FBQyxJQUFJLENBQ1IsK0RBQStELENBQ2hFLENBQUE7WUFDRCxlQUFLLENBQUMsSUFBSSxDQUNSLGtIQUFrSCxDQUNuSCxDQUFBO1lBQ0QsZUFBSyxDQUFDLElBQUksQ0FDUiw4RUFBOEUsQ0FDL0UsQ0FBQTtZQUNELGVBQUssQ0FBQyxJQUFJLENBQ1IsaUdBQWlHLENBQ2xHLENBQUE7WUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUE7U0FDdEM7UUFFRCxPQUFPLENBQUMsS0FBSyxDQUFDLCtCQUErQixDQUFDLENBQUE7UUFDOUMsTUFBTSxnQkFBTSxDQUFDLElBQUksQ0FBQyxpREFBaUQsQ0FBQyxDQUFBO1FBQ3BFLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUNqQixlQUFLLENBQUMsSUFBSSxDQUNSLDRKQUE0SixDQUM3SixDQUFBO1FBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFBO0tBQ2pEO0FBQ0gsQ0FBQztBQWhDRCxzQ0FnQ0M7QUFFTSxLQUFLLFVBQVUsV0FBVyxDQUMvQixPQUF5QyxFQUN6QyxPQUFlO0lBRWYsTUFBTSxZQUFZLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUE7SUFDbEUsTUFBTSxZQUFZLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLGFBQWEsQ0FBQyxDQUFBO0lBQ3BFLE1BQU0sb0JBQW9CLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLGFBQWEsQ0FBQyxDQUFBO0lBQ3ZFLE1BQU0sVUFBVSxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUE7SUFFL0QsT0FBTyxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFBO0lBQ3JDLElBQUksTUFBTSxHQUFHLElBQUEsc0JBQVUsRUFBQyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQzFDLElBQUksUUFBUSxHQUFHLE1BQU0sZUFBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUU7UUFDdkMsWUFBWSxFQUFFLFFBQVE7S0FDdkIsQ0FBQyxDQUFBO0lBQ0YsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDMUIsTUFBTSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDN0Isb0JBQVUsQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFLG9CQUFvQixFQUFFLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7SUFDeEUsb0JBQVUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDL0IsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBRWpCLE9BQU8sQ0FBQyxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQTtJQUM3RCxNQUFNLEdBQUcsSUFBQSxzQkFBVSxFQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUE7SUFDdEMsUUFBUSxHQUFHLE1BQU0sZUFBSyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUU7UUFDakMsWUFBWSxFQUFFLFFBQVE7S0FDdkIsQ0FBQyxDQUFBO0lBQ0YsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDMUIsTUFBTSxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUE7SUFDN0IsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBRWpCLE9BQU8sQ0FBQyxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQTtJQUM5QyxNQUFNLElBQUEsZ0JBQU0sRUFBQyxVQUFVLEVBQUUsdUJBQVcsQ0FBQyxDQUFBO0lBQ3JDLE1BQU0sSUFBQSxtQkFBUyxFQUFDLFVBQVUsQ0FBQyxDQUFBO0lBQzNCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtJQUVqQixJQUFJO1FBQ0YsTUFBTSxhQUFhLENBQUMsT0FBTyxDQUFDLENBQUE7S0FDN0I7SUFBQyxPQUFPLEtBQUssRUFBRTtRQUNkLGdDQUFnQztRQUNoQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQ2hCO0lBRUQsSUFBSSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDaEMsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFBO1FBQ2pELE1BQU0sZ0JBQU0sQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsQ0FBQTtRQUN4QyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7S0FDbEI7SUFFRCxPQUFPLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUE7SUFDaEQsTUFBTSxnQkFBTSxDQUFDLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFBO0lBQ25ELE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtBQUNuQixDQUFDO0FBbERELGtDQWtEQyJ9
|
|
@@ -18,13 +18,12 @@ const mac_1 = require("./esp8266/mac");
|
|
|
18
18
|
const linux_1 = require("./esp8266/linux");
|
|
19
19
|
const windows_1 = require("./esp8266/windows");
|
|
20
20
|
const windows_2 = require("./windows");
|
|
21
|
+
const devices_1 = require("../prompt/devices");
|
|
21
22
|
const finishedPromise = (0, util_1.promisify)(stream_1.finished);
|
|
22
23
|
async function default_1() {
|
|
23
24
|
const OS = (0, os_1.type)().toLowerCase();
|
|
24
25
|
const isWindows = OS === 'windows_nt';
|
|
25
|
-
const TOOLCHAIN = isWindows
|
|
26
|
-
? 'https://www.dropbox.com/s/edbtq6oi1up623i/esp8266.toolchain.win32.zip?dl=1'
|
|
27
|
-
: `https://www.moddable.com/private/esp8266.toolchain.${OS}.tgz`;
|
|
26
|
+
const TOOLCHAIN = `https://github.com/Moddable-OpenSource/tools/releases/download/v1.0.0/esp8266.toolchain.${isWindows ? 'win32' : OS}.tgz`;
|
|
28
27
|
const ARDUINO_CORE = 'https://github.com/esp8266/Arduino/releases/download/2.3.0/esp8266-2.3.0.zip';
|
|
29
28
|
const ESP_RTOS_REPO = 'https://github.com/espressif/ESP8266_RTOS_SDK.git';
|
|
30
29
|
const ESP_BRANCH = 'release/v3.2';
|
|
@@ -36,34 +35,25 @@ async function default_1() {
|
|
|
36
35
|
spinner.start('Setting up esp8266 tools');
|
|
37
36
|
// 0. ensure Moddable exists
|
|
38
37
|
if (!(0, moddable_1.moddableExists)()) {
|
|
39
|
-
spinner.fail(
|
|
38
|
+
spinner.fail(`Moddable tooling required. Run 'xs-dev setup --device ${devices_1.DEVICE_ALIAS[OS]}' before trying again.`);
|
|
40
39
|
process.exit(1);
|
|
41
40
|
}
|
|
42
|
-
if (isWindows)
|
|
41
|
+
if (isWindows) {
|
|
43
42
|
await (0, windows_2.ensureModdableCommandPrompt)(spinner);
|
|
43
|
+
}
|
|
44
44
|
// 1. ensure ~/.local/share/esp directory
|
|
45
|
-
spinner.info('Ensuring
|
|
45
|
+
spinner.info('Ensuring esp8266 directory');
|
|
46
46
|
gluegun_1.filesystem.dir(ESP_DIR);
|
|
47
47
|
// 2. download and untar xtensa toolchain
|
|
48
48
|
if (gluegun_1.filesystem.exists(TOOLCHAIN_PATH) === false) {
|
|
49
49
|
spinner.start('Downloading xtensa toolchain');
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
}
|
|
58
|
-
else {
|
|
59
|
-
const writer = (0, tar_fs_1.extract)(ESP_DIR, { readable: true });
|
|
60
|
-
const gunzip = (0, zlib_1.createGunzip)();
|
|
61
|
-
const response = await axios_1.default.get(TOOLCHAIN, {
|
|
62
|
-
responseType: 'stream',
|
|
63
|
-
});
|
|
64
|
-
response.data.pipe(gunzip).pipe(writer);
|
|
65
|
-
await finishedPromise(writer);
|
|
66
|
-
}
|
|
50
|
+
const writer = (0, tar_fs_1.extract)(ESP_DIR, { readable: true });
|
|
51
|
+
const gunzip = (0, zlib_1.createGunzip)();
|
|
52
|
+
const response = await axios_1.default.get(TOOLCHAIN, {
|
|
53
|
+
responseType: 'stream',
|
|
54
|
+
});
|
|
55
|
+
response.data.pipe(gunzip).pipe(writer);
|
|
56
|
+
await finishedPromise(writer);
|
|
67
57
|
spinner.succeed();
|
|
68
58
|
}
|
|
69
59
|
// 3. download and unzip esp8266 core for arduino
|
|
@@ -80,7 +70,7 @@ async function default_1() {
|
|
|
80
70
|
// 4. clone esp8266 RTOS SDK
|
|
81
71
|
if (gluegun_1.filesystem.exists(RTOS_PATH) === false) {
|
|
82
72
|
spinner.start('Cloning esp8266 RTOS SDK repo');
|
|
83
|
-
await gluegun_1.system.spawn(`git clone -b ${ESP_BRANCH} ${ESP_RTOS_REPO} ${RTOS_PATH}`);
|
|
73
|
+
await gluegun_1.system.spawn(`git clone --depth 1 --single-branch -b ${ESP_BRANCH} ${ESP_RTOS_REPO} ${RTOS_PATH}`);
|
|
84
74
|
spinner.succeed();
|
|
85
75
|
}
|
|
86
76
|
// 5. ensure python, pip, and pyserial are installed
|
|
@@ -114,4 +104,4 @@ async function default_1() {
|
|
|
114
104
|
`);
|
|
115
105
|
}
|
|
116
106
|
exports.default = default_1;
|
|
117
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
107
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNwODI2Ni5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90b29sYm94L3NldHVwL2VzcDgyNjYudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxQ0FBbUQ7QUFDbkQsa0RBQXlCO0FBQ3pCLG1DQUFpQztBQUNqQywrQkFBZ0M7QUFDaEMsbUNBQWdDO0FBQ2hDLCtCQUFtQztBQUNuQywrQ0FBb0Q7QUFDcEQsMkJBQXlDO0FBQ3pDLDJDQUE0RDtBQUM1RCx5Q0FBMkM7QUFDM0MsZ0VBQXVDO0FBQ3ZDLHVDQUE2RDtBQUM3RCwyQ0FBaUU7QUFDakUsK0NBQXFFO0FBQ3JFLHVDQUF1RDtBQUN2RCwrQ0FBZ0Q7QUFHaEQsTUFBTSxlQUFlLEdBQUcsSUFBQSxnQkFBUyxFQUFDLGlCQUFRLENBQUMsQ0FBQTtBQUU1QixLQUFLO0lBQ2xCLE1BQU0sRUFBRSxHQUFHLElBQUEsU0FBWSxHQUFFLENBQUMsV0FBVyxFQUFZLENBQUE7SUFDakQsTUFBTSxTQUFTLEdBQUcsRUFBRSxLQUFLLFlBQVksQ0FBQTtJQUNyQyxNQUFNLFNBQVMsR0FBRywyRkFDaEIsU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQ3hCLE1BQU0sQ0FBQTtJQUNOLE1BQU0sWUFBWSxHQUNoQiw4RUFBOEUsQ0FBQTtJQUNoRixNQUFNLGFBQWEsR0FBRyxtREFBbUQsQ0FBQTtJQUN6RSxNQUFNLFVBQVUsR0FBRyxjQUFjLENBQUE7SUFDakMsTUFBTSxPQUFPLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQUMsdUJBQVcsRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUN0RCxNQUFNLFNBQVMsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsa0JBQWtCLENBQUMsQ0FBQTtJQUNqRSxNQUFNLGNBQWMsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUE7SUFDL0QsTUFBTSxpQkFBaUIsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUE7SUFFdEUsTUFBTSxPQUFPLEdBQUcsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQTtJQUV6Qyw0QkFBNEI7SUFDNUIsSUFBSSxDQUFDLElBQUEseUJBQWMsR0FBRSxFQUFFO1FBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQ1YseURBQXlELHNCQUFZLENBQUMsRUFBRSxDQUFDLHdCQUF3QixDQUNsRyxDQUFBO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtLQUNoQjtJQUVELElBQUksU0FBUyxFQUFFO1FBQ2IsTUFBTSxJQUFBLHFDQUEyQixFQUFDLE9BQU8sQ0FBQyxDQUFBO0tBQzNDO0lBRUQseUNBQXlDO0lBQ3pDLE9BQU8sQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUMsQ0FBQTtJQUMxQyxvQkFBVSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUV2Qix5Q0FBeUM7SUFDekMsSUFBSSxvQkFBVSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxLQUFLLEVBQUU7UUFDL0MsT0FBTyxDQUFDLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFBO1FBRTdDLE1BQU0sTUFBTSxHQUFHLElBQUEsZ0JBQU8sRUFBQyxPQUFPLEVBQUUsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQTtRQUNuRCxNQUFNLE1BQU0sR0FBRyxJQUFBLG1CQUFZLEdBQUUsQ0FBQTtRQUM3QixNQUFNLFFBQVEsR0FBRyxNQUFNLGVBQUssQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFO1lBQzFDLFlBQVksRUFBRSxRQUFRO1NBQ3ZCLENBQUMsQ0FBQTtRQUNGLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN2QyxNQUFNLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUM3QixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7S0FDbEI7SUFFRCxpREFBaUQ7SUFDakQsSUFBSSxvQkFBVSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEtBQUssRUFBRTtRQUNsRCxPQUFPLENBQUMsS0FBSyxDQUFDLGtDQUFrQyxDQUFDLENBQUE7UUFDakQsTUFBTSxNQUFNLEdBQUcsSUFBQSxzQkFBVSxFQUFDLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUE7UUFDNUMsTUFBTSxRQUFRLEdBQUcsTUFBTSxlQUFLLENBQUMsR0FBRyxDQUFDLFlBQVksRUFBRTtZQUM3QyxZQUFZLEVBQUUsUUFBUTtTQUN2QixDQUFDLENBQUE7UUFDRixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUMxQixNQUFNLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUM3QixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7S0FDbEI7SUFFRCw0QkFBNEI7SUFDNUIsSUFBSSxvQkFBVSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxLQUFLLEVBQUU7UUFDMUMsT0FBTyxDQUFDLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFBO1FBQzlDLE1BQU0sZ0JBQU0sQ0FBQyxLQUFLLENBQ2hCLDBDQUEwQyxVQUFVLElBQUksYUFBYSxJQUFJLFNBQVMsRUFBRSxDQUNyRixDQUFBO1FBQ0QsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO0tBQ2xCO0lBRUQsb0RBQW9EO0lBQ3BELElBQUksRUFBRSxLQUFLLFFBQVEsRUFBRTtRQUNuQixNQUFNLElBQUEsaUJBQWMsRUFBQyxPQUFPLENBQUMsQ0FBQTtLQUM5QjtJQUVELElBQUksRUFBRSxLQUFLLE9BQU8sRUFBRTtRQUNsQixNQUFNLElBQUEsbUJBQWdCLEVBQUMsT0FBTyxDQUFDLENBQUE7S0FDaEM7SUFFRCxJQUFJLFNBQVMsRUFBRTtRQUNiLElBQUk7WUFDRixNQUFNLElBQUEscUJBQWtCLEVBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1NBQzNDO1FBQUMsT0FBTyxLQUFLLEVBQUU7WUFDZCxlQUFLLENBQUMsS0FBSyxDQUNULDhFQUE4RSxDQUMvRSxDQUFBO1lBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtTQUNoQjtLQUNGO0lBRUQsaURBQWlEO0lBQ2pELElBQUksRUFBRSxLQUFLLFFBQVEsSUFBSSxFQUFFLEtBQUssT0FBTyxFQUFFO1FBQ3JDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFO1lBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtZQUNyQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUE7WUFDOUIsTUFBTSxJQUFBLGdCQUFNLEVBQUMsNkJBQWlCLEVBQUUsbUJBQW1CLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQTtTQUMzRTtLQUNGLENBQUMsa0RBQWtEO0lBRXBELE9BQU8sQ0FBQyxPQUFPLENBQUM7O3lDQUdkLFNBQVMsQ0FBQyxDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQyxDQUFDLGtCQUMxQzs7R0FFQyxDQUFDLENBQUE7QUFDSixDQUFDO0FBekdELDRCQXlHQyJ9
|