xs-dev 0.15.1 → 0.16.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/bin/xs-dev +3 -4
- package/build/commands/setup.js +3 -3
- package/build/commands/update.js +3 -3
- package/build/toolbox/setup/linux.js +45 -7
- package/build/toolbox/setup/mac.js +51 -12
- package/build/toolbox/setup/moddable.js +35 -2
- package/build/toolbox/setup/types.js +3 -0
- package/build/toolbox/setup/windows.js +2 -2
- package/build/toolbox/update/linux.js +92 -31
- package/build/toolbox/update/mac.js +80 -26
- package/build/types/toolbox/setup/linux.d.ts +2 -1
- package/build/types/toolbox/setup/mac.d.ts +2 -1
- package/build/types/toolbox/setup/moddable.d.ts +11 -0
- package/build/types/toolbox/setup/types.d.ts +3 -0
- package/build/types/toolbox/setup/windows.d.ts +2 -1
- package/build/types/toolbox/update/linux.d.ts +2 -1
- package/build/types/toolbox/update/mac.d.ts +2 -1
- package/build/types/types.d.ts +3 -2
- package/docs/src/components/HeadCommon.astro +0 -9
- package/docs/src/components/HeadSEO.astro +2 -8
- package/docs/src/components/Header/Header.astro +1 -1
- package/docs/src/components/LeftSidebar/LeftSidebar.astro +1 -1
- package/docs/src/layouts/MainLayout.astro +1 -1
- package/docs/src/pages/en/features/setup.md +13 -1
- package/docs/src/pages/en/features/update.md +16 -0
- package/docs/tsconfig.json +1 -0
- package/package.json +8 -8
package/bin/xs-dev
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
|
|
4
3
|
/* tslint:disable */
|
|
5
4
|
// check if we're running in dev mode
|
|
6
5
|
var devMode = require('fs').existsSync(`${__dirname}/../src`)
|
|
@@ -13,9 +12,9 @@ if (wantsCompiled || !devMode) {
|
|
|
13
12
|
} else {
|
|
14
13
|
// this runs from the typescript source (for dev only)
|
|
15
14
|
// hook into ts-node so we can run typescript on the fly
|
|
16
|
-
require('ts-node').register({
|
|
15
|
+
require('ts-node').register({
|
|
16
|
+
project: `${__dirname}/../tsconfig.json`,
|
|
17
|
+
})
|
|
17
18
|
// run the CLI with the current process arguments
|
|
18
19
|
require(`${__dirname}/../src/cli`).run(process.argv)
|
|
19
20
|
}
|
|
20
|
-
|
|
21
|
-
|
package/build/commands/setup.js
CHANGED
|
@@ -11,7 +11,7 @@ const command = {
|
|
|
11
11
|
description: 'Download and build Moddable tooling for various platform targets',
|
|
12
12
|
run: async ({ parameters, setup, prompt, print }) => {
|
|
13
13
|
const currentPlatform = (0, os_1.type)().toLowerCase();
|
|
14
|
-
const { device, listDevices = false, tool, } = parameters.options;
|
|
14
|
+
const { device, listDevices = false, tool, targetBranch = 'latest-release', } = parameters.options;
|
|
15
15
|
let target = device !== null && device !== void 0 ? device : currentPlatform;
|
|
16
16
|
if (device === undefined && listDevices) {
|
|
17
17
|
const choices = [
|
|
@@ -45,8 +45,8 @@ const command = {
|
|
|
45
45
|
await (0, fontbm_1.default)();
|
|
46
46
|
return;
|
|
47
47
|
}
|
|
48
|
-
await setup[target]();
|
|
48
|
+
await setup[target]({ targetBranch });
|
|
49
49
|
},
|
|
50
50
|
};
|
|
51
51
|
exports.default = command;
|
|
52
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvc2V0dXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSwyQkFBeUM7QUFFekMscUVBQWlEO0FBQ2pELHVEQUF3RDtBQVN4RCxNQUFNLE9BQU8sR0FBaUM7SUFDNUMsSUFBSSxFQUFFLE9BQU87SUFDYixXQUFXLEVBQ1Qsa0VBQWtFO0lBQ3BFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1FBQ2xELE1BQU0sZUFBZSxHQUFXLElBQUEsU0FBWSxHQUFFLENBQUMsV0FBVyxFQUFZLENBQUE7UUFDdEUsTUFBTSxFQUNKLE1BQU0sRUFDTixXQUFXLEdBQUcsS0FBSyxFQUNuQixJQUFJLEVBQ0osWUFBWSxHQUFHLGdCQUFnQixHQUNoQyxHQUFpQixVQUFVLENBQUMsT0FBTyxDQUFBO1FBQ3BDLElBQUksTUFBTSxHQUFXLE1BQU0sYUFBTixNQUFNLGNBQU4sTUFBTSxHQUFJLGVBQWUsQ0FBQTtRQUU5QyxJQUFJLE1BQU0sS0FBSyxTQUFTLElBQUksV0FBVyxFQUFFO1lBQ3ZDLE1BQU0sT0FBTyxHQUFHO2dCQUNkLFNBQVM7Z0JBQ1QsT0FBTztnQkFDUCxNQUFNO2dCQUNOLE1BQU07Z0JBQ04sc0JBQVksQ0FBQyxlQUFlLENBQUM7YUFDOUIsQ0FBQTtZQUNELE1BQU0sRUFBRSxNQUFNLEVBQUUsY0FBYyxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsR0FBRyxDQUFDO2dCQUNsRDtvQkFDRSxJQUFJLEVBQUUsY0FBYztvQkFDcEIsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsT0FBTyxFQUFFLHdDQUF3QztvQkFDakQsT0FBTztpQkFDUjthQUNGLENBQUMsQ0FBQTtZQUVGLElBQUksY0FBYyxLQUFLLEVBQUUsSUFBSSxjQUFjLEtBQUssU0FBUyxFQUFFO2dCQUN6RCxNQUFNLEdBQUcsY0FBd0IsQ0FBQTthQUNsQztpQkFBTTtnQkFDTCxLQUFLLENBQUMsT0FBTyxDQUFDLHNDQUFzQyxDQUFDLENBQUE7Z0JBQ3JELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7YUFDaEI7U0FDRjtRQUVELElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUN0QixJQUFJLElBQUksS0FBSyxRQUFRLEVBQUU7Z0JBQ3JCLEtBQUssQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLElBQUksRUFBRSxDQUFDLENBQUE7Z0JBQ3JDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7YUFDaEI7WUFDRCxNQUFNLElBQUEsZ0JBQVcsR0FBRSxDQUFBO1lBQ25CLE9BQU07U0FDUDtRQUVELE1BQU0sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQTtJQUN2QyxDQUFDO0NBQ0YsQ0FBQTtBQUVELGtCQUFlLE9BQU8sQ0FBQSJ9
|
package/build/commands/update.js
CHANGED
|
@@ -6,9 +6,9 @@ const command = {
|
|
|
6
6
|
description: 'Check and update Moddable tooling for various platform targets',
|
|
7
7
|
run: async ({ parameters, update }) => {
|
|
8
8
|
const currentPlatform = (0, os_1.type)().toLowerCase();
|
|
9
|
-
const { device = currentPlatform } = parameters.options;
|
|
10
|
-
await update[device]();
|
|
9
|
+
const { device = currentPlatform, targetBranch = 'latest-release', } = parameters.options;
|
|
10
|
+
await update[device]({ targetBranch });
|
|
11
11
|
},
|
|
12
12
|
};
|
|
13
13
|
exports.default = command;
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3VwZGF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDJCQUF5QztBQVF6QyxNQUFNLE9BQU8sR0FBaUM7SUFDNUMsSUFBSSxFQUFFLFFBQVE7SUFDZCxXQUFXLEVBQUUsZ0VBQWdFO0lBQzdFLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRTtRQUNwQyxNQUFNLGVBQWUsR0FBVyxJQUFBLFNBQVksR0FBRSxDQUFDLFdBQVcsRUFBWSxDQUFBO1FBQ3RFLE1BQU0sRUFDSixNQUFNLEdBQUcsZUFBZSxFQUN4QixZQUFZLEdBQUcsZ0JBQWdCLEdBQ2hDLEdBQWtCLFVBQVUsQ0FBQyxPQUFPLENBQUE7UUFDckMsTUFBTSxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFBO0lBQ3hDLENBQUM7Q0FDRixDQUFBO0FBRUQsa0JBQWUsT0FBTyxDQUFBIn0=
|
|
@@ -3,13 +3,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const os_1 = __importDefault(require("os"));
|
|
7
|
+
const util_1 = require("util");
|
|
8
|
+
const fs_1 = require("fs");
|
|
6
9
|
const gluegun_1 = require("gluegun");
|
|
7
10
|
const constants_1 = require("./constants");
|
|
8
11
|
const upsert_1 = __importDefault(require("../patching/upsert"));
|
|
9
12
|
const exec_1 = require("../system/exec");
|
|
10
|
-
|
|
13
|
+
const moddable_1 = require("./moddable");
|
|
14
|
+
const chmodPromise = (0, util_1.promisify)(fs_1.chmod);
|
|
15
|
+
async function default_1({ targetBranch }) {
|
|
16
|
+
var _a;
|
|
11
17
|
gluegun_1.print.info('Setting up Linux tools!');
|
|
12
18
|
const BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'lin', 'release');
|
|
19
|
+
const DEBUG_BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'lin', 'debug');
|
|
13
20
|
const BUILD_DIR = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'makefiles', 'lin');
|
|
14
21
|
const PROFILE_PATH = (0, constants_1.getProfilePath)();
|
|
15
22
|
const spinner = gluegun_1.print.spin();
|
|
@@ -32,8 +39,32 @@ async function default_1() {
|
|
|
32
39
|
spinner.info('Moddable repo already installed');
|
|
33
40
|
}
|
|
34
41
|
else {
|
|
35
|
-
|
|
36
|
-
|
|
42
|
+
if (targetBranch === 'latest-release') {
|
|
43
|
+
spinner.start('Getting latest Moddable-OpenSource/moddable release');
|
|
44
|
+
const release = await (0, moddable_1.fetchLatestRelease)();
|
|
45
|
+
await gluegun_1.system.spawn(`git clone ${constants_1.MODDABLE_REPO} ${constants_1.INSTALL_PATH} --depth 1 --branch ${release.tag_name} --single-branch`);
|
|
46
|
+
gluegun_1.filesystem.dir(BIN_PATH);
|
|
47
|
+
gluegun_1.filesystem.dir(DEBUG_BIN_PATH);
|
|
48
|
+
const isArm = os_1.default.arch() === 'arm64';
|
|
49
|
+
const assetName = isArm
|
|
50
|
+
? 'moddable-tools-lin64arm.zip'
|
|
51
|
+
: 'moddable-tools-lin64.zip';
|
|
52
|
+
spinner.info('Downloading release tools');
|
|
53
|
+
await (0, moddable_1.downloadReleaseTools)({
|
|
54
|
+
writePath: BIN_PATH,
|
|
55
|
+
assetName,
|
|
56
|
+
release,
|
|
57
|
+
});
|
|
58
|
+
const tools = (_a = gluegun_1.filesystem.list(BIN_PATH)) !== null && _a !== void 0 ? _a : [];
|
|
59
|
+
await Promise.all(tools.map(async (tool) => {
|
|
60
|
+
await chmodPromise(gluegun_1.filesystem.resolve(BIN_PATH, tool), 0o751);
|
|
61
|
+
await gluegun_1.filesystem.copyAsync(gluegun_1.filesystem.resolve(BIN_PATH, tool), gluegun_1.filesystem.resolve(DEBUG_BIN_PATH, tool));
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
if (targetBranch === 'public') {
|
|
65
|
+
spinner.start('Cloning Moddable-OpenSource/moddable repo');
|
|
66
|
+
await gluegun_1.system.spawn(`git clone ${constants_1.MODDABLE_REPO} ${constants_1.INSTALL_PATH} --depth 1 --branch ${targetBranch} --single-branch`);
|
|
67
|
+
}
|
|
37
68
|
spinner.succeed();
|
|
38
69
|
}
|
|
39
70
|
// 4. Setup the MODDABLE environment variable
|
|
@@ -43,11 +74,18 @@ async function default_1() {
|
|
|
43
74
|
await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `export MODDABLE=${process.env.MODDABLE}`);
|
|
44
75
|
await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `export PATH="${BIN_PATH}:$PATH"`);
|
|
45
76
|
// 5. Build the Moddable command line tools, simulator, and debugger from the command line:
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
77
|
+
if (targetBranch === 'public') {
|
|
78
|
+
spinner.start('Building platform tooling');
|
|
79
|
+
await gluegun_1.system.exec('make', { cwd: BUILD_DIR, stdout: process.stdout });
|
|
80
|
+
spinner.succeed();
|
|
81
|
+
}
|
|
49
82
|
// 6. Install the desktop simulator and xsbug debugger applications
|
|
50
83
|
spinner.start('Installing simulator');
|
|
84
|
+
if (targetBranch === 'latest-release') {
|
|
85
|
+
gluegun_1.filesystem.dir(gluegun_1.filesystem.resolve(BUILD_DIR, '..', '..', 'tmp', 'lin', 'debug', 'simulator'));
|
|
86
|
+
await gluegun_1.system.exec(`mcconfig -m -p x-lin ${gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'tools', 'xsbug', 'manifest.json')}`, { process });
|
|
87
|
+
await gluegun_1.system.exec(`mcconfig -m -p x-lin ${gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'tools', 'mcsim', 'manifest.json')}`, { process });
|
|
88
|
+
}
|
|
51
89
|
await (0, exec_1.execWithSudo)('make install', {
|
|
52
90
|
cwd: BUILD_DIR,
|
|
53
91
|
stdout: process.stdout,
|
|
@@ -57,4 +95,4 @@ async function default_1() {
|
|
|
57
95
|
gluegun_1.print.success('Moddable SDK successfully set up! Start a new terminal session and run the "helloworld example": xs-dev run --example helloworld');
|
|
58
96
|
}
|
|
59
97
|
exports.default = default_1;
|
|
60
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
98
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGludXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbGJveC9zZXR1cC9saW51eC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDRDQUFtQjtBQUNuQiwrQkFBZ0M7QUFDaEMsMkJBQTBCO0FBQzFCLHFDQUFtRDtBQUNuRCwyQ0FNb0I7QUFDcEIsZ0VBQXVDO0FBQ3ZDLHlDQUE2QztBQUU3Qyx5Q0FBcUU7QUFFckUsTUFBTSxZQUFZLEdBQUcsSUFBQSxnQkFBUyxFQUFDLFVBQUssQ0FBQyxDQUFBO0FBRXRCLEtBQUssb0JBQVcsRUFBRSxZQUFZLEVBQWE7O0lBQ3hELGVBQUssQ0FBQyxJQUFJLENBQUMseUJBQXlCLENBQUMsQ0FBQTtJQUVyQyxNQUFNLFFBQVEsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FDakMsd0JBQVksRUFDWixPQUFPLEVBQ1AsS0FBSyxFQUNMLEtBQUssRUFDTCxTQUFTLENBQ1YsQ0FBQTtJQUNELE1BQU0sY0FBYyxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUN2Qyx3QkFBWSxFQUNaLE9BQU8sRUFDUCxLQUFLLEVBQ0wsS0FBSyxFQUNMLE9BQU8sQ0FDUixDQUFBO0lBQ0QsTUFBTSxTQUFTLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQ2xDLHdCQUFZLEVBQ1osT0FBTyxFQUNQLFdBQVcsRUFDWCxLQUFLLENBQ04sQ0FBQTtJQUNELE1BQU0sWUFBWSxHQUFHLElBQUEsMEJBQWMsR0FBRSxDQUFBO0lBRXJDLE1BQU0sT0FBTyxHQUFHLGVBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUM1QixPQUFPLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLENBQUE7SUFFbkMsK0VBQStFO0lBQy9FLG9CQUFVLENBQUMsR0FBRyxDQUFDLHVCQUFXLENBQUMsQ0FBQTtJQUUzQixNQUFNLElBQUEsZ0JBQU0sRUFBQyw2QkFBaUIsRUFBRSwyQkFBMkIsQ0FBQyxDQUFBO0lBRTVELHlEQUF5RDtJQUN6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
|
|
@@ -4,11 +4,18 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const gluegun_1 = require("gluegun");
|
|
7
|
+
const os_1 = __importDefault(require("os"));
|
|
8
|
+
const util_1 = require("util");
|
|
9
|
+
const fs_1 = require("fs");
|
|
7
10
|
const constants_1 = require("./constants");
|
|
8
11
|
const upsert_1 = __importDefault(require("../patching/upsert"));
|
|
9
|
-
|
|
12
|
+
const moddable_1 = require("./moddable");
|
|
13
|
+
const chmodPromise = (0, util_1.promisify)(fs_1.chmod);
|
|
14
|
+
async function default_1({ targetBranch }) {
|
|
15
|
+
var _a;
|
|
10
16
|
gluegun_1.print.info('Setting up the mac tools!');
|
|
11
17
|
const BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'mac', 'release');
|
|
18
|
+
const DEBUG_BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'mac', 'debug');
|
|
12
19
|
const BUILD_DIR = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'makefiles', 'mac');
|
|
13
20
|
const PROFILE_PATH = (0, constants_1.getProfilePath)();
|
|
14
21
|
// 0. ensure xcode command line tools are available (?)
|
|
@@ -35,8 +42,38 @@ async function default_1() {
|
|
|
35
42
|
}
|
|
36
43
|
else {
|
|
37
44
|
try {
|
|
38
|
-
|
|
39
|
-
|
|
45
|
+
if (targetBranch === 'latest-release') {
|
|
46
|
+
spinner.start('Getting latest Moddable-OpenSource/moddable release');
|
|
47
|
+
const release = await (0, moddable_1.fetchLatestRelease)();
|
|
48
|
+
await gluegun_1.system.spawn(`git clone ${constants_1.MODDABLE_REPO} ${constants_1.INSTALL_PATH} --depth 1 --branch ${release.tag_name} --single-branch`);
|
|
49
|
+
gluegun_1.filesystem.dir(BIN_PATH);
|
|
50
|
+
gluegun_1.filesystem.dir(DEBUG_BIN_PATH);
|
|
51
|
+
const isArm = os_1.default.arch() === 'arm64';
|
|
52
|
+
const assetName = isArm
|
|
53
|
+
? 'moddable-tools-mac64arm.zip'
|
|
54
|
+
: 'moddable-tools-mac64.zip';
|
|
55
|
+
spinner.info('Downloading release tools');
|
|
56
|
+
await (0, moddable_1.downloadReleaseTools)({
|
|
57
|
+
writePath: BIN_PATH,
|
|
58
|
+
assetName,
|
|
59
|
+
release,
|
|
60
|
+
});
|
|
61
|
+
const tools = (_a = gluegun_1.filesystem.list(BIN_PATH)) !== null && _a !== void 0 ? _a : [];
|
|
62
|
+
await Promise.all(tools.map(async (tool) => {
|
|
63
|
+
if (tool.endsWith('.app')) {
|
|
64
|
+
const mainPath = gluegun_1.filesystem.resolve(BIN_PATH, tool, 'Contents', 'MacOS', 'main');
|
|
65
|
+
await chmodPromise(mainPath, 0o751);
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
await chmodPromise(gluegun_1.filesystem.resolve(BIN_PATH, tool), 0o751);
|
|
69
|
+
}
|
|
70
|
+
await gluegun_1.filesystem.copyAsync(gluegun_1.filesystem.resolve(BIN_PATH, tool), gluegun_1.filesystem.resolve(DEBUG_BIN_PATH, tool));
|
|
71
|
+
}));
|
|
72
|
+
}
|
|
73
|
+
if (targetBranch === 'public') {
|
|
74
|
+
spinner.start('Cloning Moddable-OpenSource/moddable repo');
|
|
75
|
+
await gluegun_1.system.spawn(`git clone ${constants_1.MODDABLE_REPO} ${constants_1.INSTALL_PATH} --depth 1 --branch ${targetBranch} --single-branch`);
|
|
76
|
+
}
|
|
40
77
|
spinner.succeed();
|
|
41
78
|
}
|
|
42
79
|
catch (error) {
|
|
@@ -51,14 +88,16 @@ async function default_1() {
|
|
|
51
88
|
await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `export MODDABLE=${process.env.MODDABLE}`);
|
|
52
89
|
await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `export PATH="${BIN_PATH}:$PATH"`);
|
|
53
90
|
// 3. cd into makefiles dir for platform, run `make`
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
91
|
+
if (targetBranch === 'public') {
|
|
92
|
+
try {
|
|
93
|
+
spinner.start('Building platform tooling');
|
|
94
|
+
await gluegun_1.system.exec('make', { cwd: BUILD_DIR, stdout: process.stdout });
|
|
95
|
+
spinner.succeed();
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
spinner.fail(`Error building mac tooling: ${String(error)}`);
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
62
101
|
}
|
|
63
102
|
// 4. symlink xsbug.app into user applications directory
|
|
64
103
|
try {
|
|
@@ -76,4 +115,4 @@ async function default_1() {
|
|
|
76
115
|
spinner.succeed('Moddable SDK successfully set up! Start a new terminal session and run the "helloworld example": xs-dev run --example helloworld');
|
|
77
116
|
}
|
|
78
117
|
exports.default = default_1;
|
|
79
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rvb2xib3gvc2V0dXAvbWFjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUNBQW1EO0FBQ25ELDRDQUFtQjtBQUNuQiwrQkFBZ0M7QUFDaEMsMkJBQTBCO0FBQzFCLDJDQU1vQjtBQUNwQixnRUFBdUM7QUFDdkMseUNBQXFFO0FBR3JFLE1BQU0sWUFBWSxHQUFHLElBQUEsZ0JBQVMsRUFBQyxVQUFLLENBQUMsQ0FBQTtBQUV0QixLQUFLLG9CQUFXLEVBQUUsWUFBWSxFQUFhOztJQUN4RCxlQUFLLENBQUMsSUFBSSxDQUFDLDJCQUEyQixDQUFDLENBQUE7SUFFdkMsTUFBTSxRQUFRLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQ2pDLHdCQUFZLEVBQ1osT0FBTyxFQUNQLEtBQUssRUFDTCxLQUFLLEVBQ0wsU0FBUyxDQUNWLENBQUE7SUFDRCxNQUFNLGNBQWMsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FDdkMsd0JBQVksRUFDWixPQUFPLEVBQ1AsS0FBSyxFQUNMLEtBQUssRUFDTCxPQUFPLENBQ1IsQ0FBQTtJQUNELE1BQU0sU0FBUyxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUNsQyx3QkFBWSxFQUNaLE9BQU8sRUFDUCxXQUFXLEVBQ1gsS0FBSyxDQUNOLENBQUE7SUFFRCxNQUFNLFlBQVksR0FBRyxJQUFBLDBCQUFjLEdBQUUsQ0FBQTtJQUVyQyx1REFBdUQ7SUFDdkQsSUFBSTtRQUNGLE1BQU0sZ0JBQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtLQUNyQztJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ2QsZUFBSyxDQUFDLEtBQUssQ0FDVCw0RkFBNEYsQ0FDN0YsQ0FBQTtRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDaEI7SUFFRCxNQUFNLE9BQU8sR0FBRyxlQUFLLENBQUMsSUFBSSxFQUFFLENBQUE7SUFD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
|
|
@@ -1,10 +1,43 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.moddableExists = void 0;
|
|
6
|
+
exports.downloadReleaseTools = exports.fetchLatestRelease = exports.moddableExists = void 0;
|
|
7
|
+
const stream_1 = require("stream");
|
|
8
|
+
const util_1 = require("util");
|
|
4
9
|
const gluegun_1 = require("gluegun");
|
|
10
|
+
const rest_1 = require("@octokit/rest");
|
|
11
|
+
const unzip_stream_1 = require("unzip-stream");
|
|
12
|
+
const axios_1 = __importDefault(require("axios"));
|
|
13
|
+
const finishedPromise = (0, util_1.promisify)(stream_1.finished);
|
|
5
14
|
function moddableExists() {
|
|
6
15
|
return (process.env.MODDABLE !== undefined &&
|
|
7
16
|
gluegun_1.filesystem.exists(process.env.MODDABLE) === 'dir');
|
|
8
17
|
}
|
|
9
18
|
exports.moddableExists = moddableExists;
|
|
10
|
-
|
|
19
|
+
async function fetchLatestRelease() {
|
|
20
|
+
const octokit = new rest_1.Octokit();
|
|
21
|
+
const { data: latestRelease } = await octokit.rest.repos.getLatestRelease({
|
|
22
|
+
owner: 'Moddable-OpenSource',
|
|
23
|
+
repo: 'moddable',
|
|
24
|
+
});
|
|
25
|
+
return latestRelease;
|
|
26
|
+
}
|
|
27
|
+
exports.fetchLatestRelease = fetchLatestRelease;
|
|
28
|
+
async function downloadReleaseTools({ writePath, assetName, release, }) {
|
|
29
|
+
const moddableTools = release.assets.find(({ name }) => name === assetName);
|
|
30
|
+
if (moddableTools === undefined) {
|
|
31
|
+
throw new Error(`Unable to find release asset matching ${assetName}`);
|
|
32
|
+
}
|
|
33
|
+
const zipWriter = (0, unzip_stream_1.Extract)({
|
|
34
|
+
path: writePath,
|
|
35
|
+
});
|
|
36
|
+
const response = await axios_1.default.get(moddableTools.browser_download_url, {
|
|
37
|
+
responseType: 'stream',
|
|
38
|
+
});
|
|
39
|
+
response.data.pipe(zipWriter);
|
|
40
|
+
await finishedPromise(zipWriter);
|
|
41
|
+
}
|
|
42
|
+
exports.downloadReleaseTools = downloadReleaseTools;
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZGFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbGJveC9zZXR1cC9tb2RkYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtQ0FBaUM7QUFDakMsK0JBQWdDO0FBQ2hDLHFDQUFvQztBQUNwQyx3Q0FBZ0U7QUFDaEUsK0NBQW9EO0FBQ3BELGtEQUF5QjtBQUV6QixNQUFNLGVBQWUsR0FBRyxJQUFBLGdCQUFTLEVBQUMsaUJBQVEsQ0FBQyxDQUFBO0FBRTNDLFNBQWdCLGNBQWM7SUFDNUIsT0FBTyxDQUNMLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxLQUFLLFNBQVM7UUFDbEMsb0JBQVUsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsS0FBSyxLQUFLLENBQ2xELENBQUE7QUFDSCxDQUFDO0FBTEQsd0NBS0M7QUFXTSxLQUFLLFVBQVUsa0JBQWtCO0lBQ3RDLE1BQU0sT0FBTyxHQUFHLElBQUksY0FBTyxFQUFFLENBQUE7SUFDN0IsTUFBTSxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsR0FBRyxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDO1FBQ3hFLEtBQUssRUFBRSxxQkFBcUI7UUFDNUIsSUFBSSxFQUFFLFVBQVU7S0FDakIsQ0FBQyxDQUFBO0lBQ0YsT0FBTyxhQUFhLENBQUE7QUFDdEIsQ0FBQztBQVBELGdEQU9DO0FBUU0sS0FBSyxVQUFVLG9CQUFvQixDQUFDLEVBQ3pDLFNBQVMsRUFDVCxTQUFTLEVBQ1QsT0FBTyxHQUNXO0lBQ2xCLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFBO0lBRTNFLElBQUksYUFBYSxLQUFLLFNBQVMsRUFBRTtRQUMvQixNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxTQUFTLEVBQUUsQ0FBQyxDQUFBO0tBQ3RFO0lBRUQsTUFBTSxTQUFTLEdBQUcsSUFBQSxzQkFBVSxFQUFDO1FBQzNCLElBQUksRUFBRSxTQUFTO0tBQ2hCLENBQUMsQ0FBQTtJQUNGLE1BQU0sUUFBUSxHQUFHLE1BQU0sZUFBSyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsb0JBQW9CLEVBQUU7UUFDbkUsWUFBWSxFQUFFLFFBQVE7S0FDdkIsQ0FBQyxDQUFBO0lBQ0YsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDN0IsTUFBTSxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUE7QUFDbEMsQ0FBQztBQW5CRCxvREFtQkMifQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbGJveC9zZXR1cC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const gluegun_1 = require("gluegun");
|
|
4
|
-
async function default_1() {
|
|
4
|
+
async function default_1(_args) {
|
|
5
5
|
gluegun_1.print.warning('Windows setup is not currently supported');
|
|
6
6
|
}
|
|
7
7
|
exports.default = default_1;
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2luZG93cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90b29sYm94L3NldHVwL3dpbmRvd3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxxQ0FBK0I7QUFHaEIsS0FBSyxvQkFBVyxLQUFnQjtJQUM3QyxlQUFLLENBQUMsT0FBTyxDQUFDLDBDQUEwQyxDQUFDLENBQUE7QUFDM0QsQ0FBQztBQUZELDRCQUVDIn0=
|
|
@@ -1,39 +1,100 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const os_1 = __importDefault(require("os"));
|
|
7
|
+
const util_1 = require("util");
|
|
8
|
+
const fs_1 = require("fs");
|
|
3
9
|
const gluegun_1 = require("gluegun");
|
|
4
10
|
const constants_1 = require("../setup/constants");
|
|
5
|
-
|
|
11
|
+
const moddable_1 = require("../setup/moddable");
|
|
12
|
+
const exec_1 = require("../system/exec");
|
|
13
|
+
const chmodPromise = (0, util_1.promisify)(fs_1.chmod);
|
|
14
|
+
async function default_1({ targetBranch }) {
|
|
15
|
+
var _a;
|
|
16
|
+
// 0. ensure Moddable exists
|
|
17
|
+
if (!(0, moddable_1.moddableExists)()) {
|
|
18
|
+
gluegun_1.print.error('Moddable tooling required. Run `xs-dev setup` before trying again.');
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
6
21
|
gluegun_1.print.info('Checking for SDK changes');
|
|
7
|
-
const BUILD_DIR = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'makefiles', '
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
22
|
+
const BUILD_DIR = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'makefiles', 'lin');
|
|
23
|
+
if (targetBranch === 'latest-release') {
|
|
24
|
+
// get tag for current repo
|
|
25
|
+
const currentTag = await gluegun_1.system.exec('git tag', {
|
|
26
|
+
cwd: process.env.MODDABLE,
|
|
27
|
+
});
|
|
28
|
+
// get latest release tag
|
|
29
|
+
const latestRelease = await (0, moddable_1.fetchLatestRelease)();
|
|
30
|
+
if (currentTag.trim() === latestRelease.tag_name) {
|
|
31
|
+
gluegun_1.print.success('Moddable SDK already up to date!');
|
|
32
|
+
process.exit(0);
|
|
33
|
+
}
|
|
34
|
+
const spinner = gluegun_1.print.spin();
|
|
35
|
+
spinner.start('Updating Moddable SDK!');
|
|
36
|
+
const BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'lin', 'release');
|
|
37
|
+
const DEBUG_BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'lin', 'debug');
|
|
38
|
+
gluegun_1.filesystem.remove(process.env.MODDABLE);
|
|
39
|
+
await gluegun_1.system.spawn(`git clone ${constants_1.MODDABLE_REPO} ${constants_1.INSTALL_PATH} --depth 1 --branch ${latestRelease.tag_name} --single-branch`);
|
|
40
|
+
gluegun_1.filesystem.dir(BIN_PATH);
|
|
41
|
+
gluegun_1.filesystem.dir(DEBUG_BIN_PATH);
|
|
42
|
+
const isArm = os_1.default.arch() === 'arm64';
|
|
43
|
+
const assetName = isArm
|
|
44
|
+
? 'moddable-tools-lin64arm.zip'
|
|
45
|
+
: 'moddable-tools-lin64.zip';
|
|
46
|
+
spinner.info('Downloading release tools');
|
|
47
|
+
await (0, moddable_1.downloadReleaseTools)({
|
|
48
|
+
writePath: BIN_PATH,
|
|
49
|
+
assetName,
|
|
50
|
+
release: latestRelease,
|
|
51
|
+
});
|
|
52
|
+
spinner.info('Updating tool permissions');
|
|
53
|
+
const tools = (_a = gluegun_1.filesystem.list(BIN_PATH)) !== null && _a !== void 0 ? _a : [];
|
|
54
|
+
await Promise.all(tools.map(async (tool) => {
|
|
55
|
+
await chmodPromise(gluegun_1.filesystem.resolve(BIN_PATH, tool), 0o751);
|
|
56
|
+
await gluegun_1.filesystem.copyAsync(gluegun_1.filesystem.resolve(BIN_PATH, tool), gluegun_1.filesystem.resolve(DEBUG_BIN_PATH, tool));
|
|
57
|
+
}));
|
|
58
|
+
spinner.info('Reinstalling simulator');
|
|
59
|
+
gluegun_1.filesystem.dir(gluegun_1.filesystem.resolve(BUILD_DIR, '..', '..', 'tmp', 'lin', 'debug', 'simulator'));
|
|
60
|
+
await gluegun_1.system.exec(`mcconfig -m -p x-lin ${gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'tools', 'xsbug', 'manifest.json')}`, { process });
|
|
61
|
+
await gluegun_1.system.exec(`mcconfig -m -p x-lin ${gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'tools', 'mcsim', 'manifest.json')}`, { process });
|
|
62
|
+
await (0, exec_1.execWithSudo)('make install', {
|
|
63
|
+
cwd: BUILD_DIR,
|
|
64
|
+
stdout: process.stdout,
|
|
65
|
+
});
|
|
66
|
+
spinner.succeed('Moddable SDK successfully updated! Start the xsbug.app and run the "helloworld example": xs-dev run --example helloworld');
|
|
67
|
+
}
|
|
68
|
+
if (targetBranch === 'public') {
|
|
69
|
+
const currentRev = await gluegun_1.system.exec('git rev-parse public', {
|
|
70
|
+
cwd: process.env.MODDABLE,
|
|
71
|
+
});
|
|
72
|
+
const remoteRev = await gluegun_1.system.exec('git ls-remote origin refs/heads/public', { cwd: process.env.MODDABLE });
|
|
73
|
+
if (remoteRev.split('\t').shift() === currentRev.trim()) {
|
|
74
|
+
gluegun_1.print.success('Moddable SDK already up to date!');
|
|
75
|
+
process.exit(0);
|
|
76
|
+
}
|
|
77
|
+
const spinner = gluegun_1.print.spin();
|
|
78
|
+
spinner.start('Updating Moddable SDK!');
|
|
79
|
+
spinner.start('Stashing any unsaved changes before committing');
|
|
80
|
+
await gluegun_1.system.exec('git stash', { cwd: process.env.MODDABLE });
|
|
81
|
+
await gluegun_1.system.exec('git pull origin public', { cwd: process.env.MODDABLE });
|
|
82
|
+
await gluegun_1.system.exec('rm -rf build/{tmp,bin}', { cwd: process.env.MODDABLE });
|
|
83
|
+
spinner.succeed();
|
|
84
|
+
spinner.start('Rebuilding platform tools');
|
|
85
|
+
await gluegun_1.system.exec('make', {
|
|
86
|
+
cwd: BUILD_DIR,
|
|
87
|
+
stdout: process.stdout,
|
|
88
|
+
});
|
|
89
|
+
spinner.succeed();
|
|
90
|
+
spinner.start('Reinstalling simulator');
|
|
91
|
+
await (0, exec_1.execWithSudo)('make install', {
|
|
92
|
+
cwd: BUILD_DIR,
|
|
93
|
+
stdout: process.stdout,
|
|
94
|
+
});
|
|
95
|
+
spinner.succeed();
|
|
96
|
+
gluegun_1.print.success('Moddable SDK successfully updated! Start the xsbug.app and run the "helloworld example": xs-dev run --example helloworld');
|
|
15
97
|
}
|
|
16
|
-
const spinner = gluegun_1.print.spin();
|
|
17
|
-
spinner.start('Updating Moddable SDK!');
|
|
18
|
-
spinner.start('Stashing any unsaved changes before committing');
|
|
19
|
-
await gluegun_1.system.exec('git stash', { cwd: process.env.MODDABLE });
|
|
20
|
-
await gluegun_1.system.exec('git pull origin public', { cwd: process.env.MODDABLE });
|
|
21
|
-
await gluegun_1.system.exec('rm -rf build/{tmp,bin}', { cwd: process.env.MODDABLE });
|
|
22
|
-
spinner.succeed();
|
|
23
|
-
spinner.start('Rebuilding platform tools');
|
|
24
|
-
await gluegun_1.system.exec('make', {
|
|
25
|
-
cwd: BUILD_DIR,
|
|
26
|
-
stdout: process.stdout,
|
|
27
|
-
});
|
|
28
|
-
spinner.succeed();
|
|
29
|
-
spinner.start('Reinstalling simulator');
|
|
30
|
-
await gluegun_1.system.exec('make install', {
|
|
31
|
-
cwd: BUILD_DIR,
|
|
32
|
-
stdout: process.stdout,
|
|
33
|
-
stdin: process.stdin,
|
|
34
|
-
});
|
|
35
|
-
spinner.succeed();
|
|
36
|
-
gluegun_1.print.success('Moddable SDK successfully updated! Start the xsbug.app and run the "helloworld example": xs-dev run --example helloworld');
|
|
37
98
|
}
|
|
38
99
|
exports.default = default_1;
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
100
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGludXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbGJveC91cGRhdGUvbGludXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw0Q0FBbUI7QUFDbkIsK0JBQWdDO0FBQ2hDLDJCQUEwQjtBQUMxQixxQ0FBbUQ7QUFDbkQsa0RBQWdFO0FBRWhFLGdEQUkwQjtBQUMxQix5Q0FBNkM7QUFFN0MsTUFBTSxZQUFZLEdBQUcsSUFBQSxnQkFBUyxFQUFDLFVBQUssQ0FBQyxDQUFBO0FBRXRCLEtBQUssb0JBQVcsRUFBRSxZQUFZLEVBQWE7O0lBQ3hELDRCQUE0QjtJQUM1QixJQUFJLENBQUMsSUFBQSx5QkFBYyxHQUFFLEVBQUU7UUFDckIsZUFBSyxDQUFDLEtBQUssQ0FDVCxvRUFBb0UsQ0FDckUsQ0FBQTtRQUNELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7S0FDaEI7SUFFRCxlQUFLLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUE7SUFFdEMsTUFBTSxTQUFTLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQ2xDLHdCQUFZLEVBQ1osT0FBTyxFQUNQLFdBQVcsRUFDWCxLQUFLLENBQ04sQ0FBQTtJQUVELElBQUksWUFBWSxLQUFLLGdCQUFnQixFQUFFO1FBQ3JDLDJCQUEyQjtRQUMzQixNQUFNLFVBQVUsR0FBVyxNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN0RCxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRO1NBQzFCLENBQUMsQ0FBQTtRQUNGLHlCQUF5QjtRQUN6QixNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUEsNkJBQWtCLEdBQUUsQ0FBQTtRQUVoRCxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxhQUFhLENBQUMsUUFBUSxFQUFFO1lBQ2hELGVBQUssQ0FBQyxPQUFPLENBQUMsa0NBQWtDLENBQUMsQ0FBQTtZQUNqRCxPQUFP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
|
|
@@ -1,39 +1,93 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
2
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const os_1 = __importDefault(require("os"));
|
|
7
|
+
const util_1 = require("util");
|
|
8
|
+
const fs_1 = require("fs");
|
|
3
9
|
const gluegun_1 = require("gluegun");
|
|
10
|
+
const constants_1 = require("../setup/constants");
|
|
4
11
|
const moddable_1 = require("../setup/moddable");
|
|
5
|
-
|
|
6
|
-
|
|
12
|
+
const chmodPromise = (0, util_1.promisify)(fs_1.chmod);
|
|
13
|
+
async function default_1({ targetBranch }) {
|
|
14
|
+
var _a, _b, _c;
|
|
7
15
|
gluegun_1.print.info('Checking for SDK changes');
|
|
8
16
|
// 0. ensure Moddable exists
|
|
9
17
|
if (!(0, moddable_1.moddableExists)()) {
|
|
10
18
|
gluegun_1.print.error('Moddable tooling required. Run `xs-dev setup` before trying again.');
|
|
11
19
|
process.exit(1);
|
|
12
20
|
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
21
|
+
if (targetBranch === 'latest-release') {
|
|
22
|
+
// get tag for current repo
|
|
23
|
+
const currentTag = await gluegun_1.system.exec('git tag', {
|
|
24
|
+
cwd: process.env.MODDABLE,
|
|
25
|
+
});
|
|
26
|
+
// get latest release tag
|
|
27
|
+
const latestRelease = await (0, moddable_1.fetchLatestRelease)();
|
|
28
|
+
if (currentTag.trim() === latestRelease.tag_name) {
|
|
29
|
+
gluegun_1.print.success('Moddable SDK already up to date!');
|
|
30
|
+
process.exit(0);
|
|
31
|
+
}
|
|
32
|
+
const spinner = gluegun_1.print.spin();
|
|
33
|
+
spinner.start('Updating Moddable SDK!');
|
|
34
|
+
const BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'mac', 'release');
|
|
35
|
+
const DEBUG_BIN_PATH = gluegun_1.filesystem.resolve(constants_1.INSTALL_PATH, 'build', 'bin', 'mac', 'debug');
|
|
36
|
+
gluegun_1.filesystem.remove(process.env.MODDABLE);
|
|
37
|
+
await gluegun_1.system.spawn(`git clone ${constants_1.MODDABLE_REPO} ${constants_1.INSTALL_PATH} --depth 1 --branch ${latestRelease.tag_name} --single-branch`);
|
|
38
|
+
gluegun_1.filesystem.dir(BIN_PATH);
|
|
39
|
+
gluegun_1.filesystem.dir(DEBUG_BIN_PATH);
|
|
40
|
+
const isArm = os_1.default.arch() === 'arm64';
|
|
41
|
+
const assetName = isArm
|
|
42
|
+
? 'moddable-tools-mac64arm.zip'
|
|
43
|
+
: 'moddable-tools-mac64.zip';
|
|
44
|
+
spinner.info('Downloading release tools');
|
|
45
|
+
await (0, moddable_1.downloadReleaseTools)({
|
|
46
|
+
writePath: BIN_PATH,
|
|
47
|
+
assetName,
|
|
48
|
+
release: latestRelease,
|
|
49
|
+
});
|
|
50
|
+
spinner.info('Updating tool permissions');
|
|
51
|
+
const tools = (_a = gluegun_1.filesystem.list(BIN_PATH)) !== null && _a !== void 0 ? _a : [];
|
|
52
|
+
await Promise.all(tools.map(async (tool) => {
|
|
53
|
+
if (tool.endsWith('.app')) {
|
|
54
|
+
const mainPath = gluegun_1.filesystem.resolve(BIN_PATH, tool, 'Contents', 'MacOS', 'main');
|
|
55
|
+
await chmodPromise(mainPath, 0o751);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
await chmodPromise(gluegun_1.filesystem.resolve(BIN_PATH, tool), 0o751);
|
|
59
|
+
}
|
|
60
|
+
await gluegun_1.filesystem.copyAsync(gluegun_1.filesystem.resolve(BIN_PATH, tool), gluegun_1.filesystem.resolve(DEBUG_BIN_PATH, tool));
|
|
61
|
+
}));
|
|
62
|
+
spinner.succeed('Moddable SDK successfully updated! Start the xsbug.app and run the "helloworld example": xs-dev run --example helloworld');
|
|
63
|
+
}
|
|
64
|
+
if (targetBranch === 'public') {
|
|
65
|
+
const currentRev = await gluegun_1.system.exec('git rev-parse public', {
|
|
66
|
+
cwd: process.env.MODDABLE,
|
|
67
|
+
});
|
|
68
|
+
const remoteRev = await gluegun_1.system.exec('git ls-remote origin refs/heads/public', { cwd: process.env.MODDABLE });
|
|
69
|
+
if (remoteRev.split('\t').shift() === currentRev.trim()) {
|
|
70
|
+
gluegun_1.print.success('Moddable SDK already up to date!');
|
|
71
|
+
process.exit(0);
|
|
72
|
+
}
|
|
73
|
+
const spinner = gluegun_1.print.spin();
|
|
74
|
+
spinner.start('Updating Moddable SDK!');
|
|
75
|
+
spinner.start('Stashing any unsaved changes before committing');
|
|
76
|
+
await gluegun_1.system.exec('git stash', { cwd: process.env.MODDABLE });
|
|
77
|
+
await gluegun_1.system.exec('git pull origin public', { cwd: process.env.MODDABLE });
|
|
78
|
+
const BUILD_DIR = gluegun_1.filesystem.resolve((_b = process.env.MODDABLE) !== null && _b !== void 0 ? _b : '', 'build', 'bin');
|
|
79
|
+
const TMP_DIR = gluegun_1.filesystem.resolve((_c = process.env.MODDABLE) !== null && _c !== void 0 ? _c : '', 'build', 'tmp');
|
|
80
|
+
gluegun_1.filesystem.remove(BUILD_DIR);
|
|
81
|
+
gluegun_1.filesystem.remove(TMP_DIR);
|
|
82
|
+
spinner.succeed();
|
|
83
|
+
spinner.start('Rebuilding platform tools');
|
|
84
|
+
// install release assets or build
|
|
85
|
+
await gluegun_1.system.exec('make', {
|
|
86
|
+
cwd: gluegun_1.filesystem.resolve(String(process.env.MODDABLE), 'build', 'makefiles', 'mac'),
|
|
87
|
+
stdout: process.stdout,
|
|
88
|
+
});
|
|
89
|
+
spinner.succeed('Moddable SDK successfully updated! Start the xsbug.app and run the "helloworld example": xs-dev run --example helloworld');
|
|
20
90
|
}
|
|
21
|
-
const spinner = gluegun_1.print.spin();
|
|
22
|
-
spinner.start('Updating Moddable SDK!');
|
|
23
|
-
spinner.start('Stashing any unsaved changes before committing');
|
|
24
|
-
await gluegun_1.system.exec('git stash', { cwd: process.env.MODDABLE });
|
|
25
|
-
await gluegun_1.system.exec('git pull origin public', { cwd: process.env.MODDABLE });
|
|
26
|
-
const BUILD_DIR = gluegun_1.filesystem.resolve((_a = process.env.MODDABLE) !== null && _a !== void 0 ? _a : '', 'build', 'bin');
|
|
27
|
-
const TMP_DIR = gluegun_1.filesystem.resolve((_b = process.env.MODDABLE) !== null && _b !== void 0 ? _b : '', 'build', 'tmp');
|
|
28
|
-
gluegun_1.filesystem.remove(BUILD_DIR);
|
|
29
|
-
gluegun_1.filesystem.remove(TMP_DIR);
|
|
30
|
-
spinner.succeed();
|
|
31
|
-
spinner.start('Rebuilding platform tools');
|
|
32
|
-
await gluegun_1.system.exec('make', {
|
|
33
|
-
cwd: gluegun_1.filesystem.resolve(String(process.env.MODDABLE), 'build', 'makefiles', 'mac'),
|
|
34
|
-
stdout: process.stdout,
|
|
35
|
-
});
|
|
36
|
-
spinner.succeed('Moddable SDK successfully updated! Start the xsbug.app and run the "helloworld example": xs-dev run --example helloworld');
|
|
37
91
|
}
|
|
38
92
|
exports.default = default_1;
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
93
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rvb2xib3gvdXBkYXRlL21hYy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDRDQUFtQjtBQUNuQiwrQkFBZ0M7QUFDaEMsMkJBQTBCO0FBQzFCLHFDQUFtRDtBQUNuRCxrREFBZ0U7QUFDaEUsZ0RBSTBCO0FBRzFCLE1BQU0sWUFBWSxHQUFHLElBQUEsZ0JBQVMsRUFBQyxVQUFLLENBQUMsQ0FBQTtBQUV0QixLQUFLLG9CQUFXLEVBQUUsWUFBWSxFQUFhOztJQUN4RCxlQUFLLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUE7SUFFdEMsNEJBQTRCO0lBQzVCLElBQUksQ0FBQyxJQUFBLHlCQUFjLEdBQUUsRUFBRTtRQUNyQixlQUFLLENBQUMsS0FBSyxDQUNULG9FQUFvRSxDQUNyRSxDQUFBO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtLQUNoQjtJQUVELElBQUksWUFBWSxLQUFLLGdCQUFnQixFQUFFO1FBQ3JDLDJCQUEyQjtRQUMzQixNQUFNLFVBQVUsR0FBVyxNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUN0RCxHQUFHLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRO1NBQzFCLENBQUMsQ0FBQTtRQUNGLHlCQUF5QjtRQUN6QixNQUFNLGFBQWEsR0FBRyxNQUFNLElBQUEsNkJBQWtCLEdBQUUsQ0FBQTtRQUVoRCxJQUFJLFVBQVUsQ0FBQyxJQUFJLEVBQUUsS0FBSyxhQUFhLENBQUMsUUFBUSxFQUFFO1lBQ2hELGVBQUssQ0FBQyxPQUFPLENBQUMsa0NBQWtDLENBQUMsQ0FBQTtZQUNqRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ2hCO1FBRUQsTUFBTSxPQUFPLEdBQUcsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFBO1FBQzVCLE9BQU8sQ0FBQyxLQUFLLENB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
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { SetupArgs } from './types';
|
|
2
|
+
export default function ({ targetBranch }: SetupArgs): Promise<void>;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { SetupArgs } from './types';
|
|
2
|
+
export default function ({ targetBranch }: SetupArgs): Promise<void>;
|
|
@@ -1 +1,12 @@
|
|
|
1
|
+
import { RestEndpointMethodTypes } from '@octokit/rest';
|
|
1
2
|
export declare function moddableExists(): boolean;
|
|
3
|
+
declare type ExtractFromArray<Item extends readonly unknown[]> = Item extends Readonly<Array<infer ItemType>> ? ItemType : never;
|
|
4
|
+
declare type GitHubRelease = ExtractFromArray<RestEndpointMethodTypes['repos']['listReleases']['response']['data']>;
|
|
5
|
+
export declare function fetchLatestRelease(): Promise<GitHubRelease>;
|
|
6
|
+
interface DownloadToolsArgs {
|
|
7
|
+
writePath: string;
|
|
8
|
+
assetName: string;
|
|
9
|
+
release: GitHubRelease;
|
|
10
|
+
}
|
|
11
|
+
export declare function downloadReleaseTools({ writePath, assetName, release, }: DownloadToolsArgs): Promise<void>;
|
|
12
|
+
export {};
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { SetupArgs } from './types';
|
|
2
|
+
export default function (_args: SetupArgs): Promise<void>;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { SetupArgs } from '../setup/types';
|
|
2
|
+
export default function ({ targetBranch }: SetupArgs): Promise<void>;
|
|
@@ -1 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
import { SetupArgs } from '../setup/types';
|
|
2
|
+
export default function ({ targetBranch }: SetupArgs): Promise<void>;
|
package/build/types/types.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { GluegunToolbox } from 'gluegun';
|
|
2
|
+
import { SetupArgs } from './toolbox/setup/types';
|
|
2
3
|
export declare type Device = 'darwin' | 'linux' | 'windows_nt' | 'esp' | 'esp8266' | 'esp32' | 'wasm' | 'pico';
|
|
3
4
|
export interface XSDevToolbox extends GluegunToolbox {
|
|
4
|
-
setup: Record<Device, () => Promise<void
|
|
5
|
-
update: Record<Device, () => Promise<void
|
|
5
|
+
setup: Record<Device, (() => Promise<void>) | ((args: SetupArgs) => Promise<void>)>;
|
|
6
|
+
update: Record<Device, (() => Promise<void>) | ((args: SetupArgs) => Promise<void>)>;
|
|
6
7
|
}
|
|
@@ -30,12 +30,3 @@ import '../styles/index.css';
|
|
|
30
30
|
root.classList.remove('theme-dark');
|
|
31
31
|
}
|
|
32
32
|
</script>
|
|
33
|
-
|
|
34
|
-
<!-- Global site tag (gtag.js) - Google Analytics -->
|
|
35
|
-
<!-- <script async src="https://www.googletagmanager.com/gtag/js?id=G-TEL60V1WM9" is:inline></script>
|
|
36
|
-
<script>
|
|
37
|
-
window.dataLayer = window.dataLayer || [];
|
|
38
|
-
function gtag(){dataLayer.push(arguments);}
|
|
39
|
-
gtag('js', new Date());
|
|
40
|
-
gtag('config', 'G-TEL60V1WM9');
|
|
41
|
-
</script> -->
|
|
@@ -5,7 +5,8 @@ export interface Props {
|
|
|
5
5
|
site: any;
|
|
6
6
|
canonicalURL: URL | string;
|
|
7
7
|
}
|
|
8
|
-
const
|
|
8
|
+
const canonicalURL = new URL(Astro.url.pathname, Astro.site);
|
|
9
|
+
const { content = {} } = Astro.props;
|
|
9
10
|
const formattedContentTitle = content.title ? `${content.title} 🚀 ${SITE.title}` : SITE.title;
|
|
10
11
|
---
|
|
11
12
|
|
|
@@ -25,10 +26,3 @@ const formattedContentTitle = content.title ? `${content.title} 🚀 ${SITE.titl
|
|
|
25
26
|
<meta name="twitter:site" content={OPEN_GRAPH.twitter} />
|
|
26
27
|
<meta name="twitter:title" content={formattedContentTitle} />
|
|
27
28
|
<meta name="twitter:description" content={content.description ? content.description : SITE.description} />
|
|
28
|
-
|
|
29
|
-
<!--
|
|
30
|
-
TODO: Add json+ld data, maybe https://schema.org/APIReference makes sense?
|
|
31
|
-
Docs: https://developers.google.com/search/docs/advanced/structured-data/intro-structured-data
|
|
32
|
-
https://www.npmjs.com/package/schema-dts seems like a great resource for implementing this.
|
|
33
|
-
Even better, there's a React component that integrates with `schema-dts`: https://github.com/google/react-schemaorg
|
|
34
|
-
-->
|
|
@@ -17,7 +17,7 @@ const lang = currentPage && getLanguageFromURL(currentPage);
|
|
|
17
17
|
<SidebarToggle client:idle />
|
|
18
18
|
</div>
|
|
19
19
|
<div class="logo flex">
|
|
20
|
-
<a href={
|
|
20
|
+
<a href={import.meta.env.BASE_URL}>
|
|
21
21
|
<h1>{CONFIG.SITE.title ?? "Documentation"}</h1>
|
|
22
22
|
</a>
|
|
23
23
|
</div>
|
|
@@ -31,7 +31,7 @@ const sidebarSections = SIDEBAR[langCode].reduce((col, item, i) => {
|
|
|
31
31
|
<ul>
|
|
32
32
|
{section.children.map((child) => (
|
|
33
33
|
<li class="nav-link">
|
|
34
|
-
<a href={`${
|
|
34
|
+
<a href={`${import.meta.env.BASE_URL}${child.link}`} aria-current={`${currentPageMatch === child.link ? 'page' : 'false'}`}>
|
|
35
35
|
{child.text}
|
|
36
36
|
</a>
|
|
37
37
|
</li>
|
|
@@ -17,7 +17,7 @@ const githubEditUrl = CONFIG.GITHUB_EDIT_URL && CONFIG.GITHUB_EDIT_URL + current
|
|
|
17
17
|
<html dir={content.dir ?? 'ltr'} lang={content.lang ?? 'en-us'} class="initial">
|
|
18
18
|
<head>
|
|
19
19
|
<HeadCommon />
|
|
20
|
-
<HeadSEO {content}
|
|
20
|
+
<HeadSEO {content} />
|
|
21
21
|
<title>{content.title ? `${content.title} 🚀 ${CONFIG.SITE.title}` : CONFIG.SITE.title}</title>
|
|
22
22
|
<style>
|
|
23
23
|
body {
|
|
@@ -6,7 +6,7 @@ layout: ../../../layouts/MainLayout.astro
|
|
|
6
6
|
|
|
7
7
|
# Moddable Platform Setup
|
|
8
8
|
|
|
9
|
-
This command downloads
|
|
9
|
+
This command downloads the [Moddable developer tooling](https://github.com/Moddable-OpenSource/moddable/blob/public/documentation/tools/tools.md) for the current OS (Windows support coming soon).
|
|
10
10
|
|
|
11
11
|
[After installing the CLI](/en/introduction#installation), call the `setup` command:
|
|
12
12
|
|
|
@@ -28,6 +28,18 @@ A symlink for [`xsbug.app`](https://github.com/Moddable-OpenSource/moddable/blob
|
|
|
28
28
|
|
|
29
29
|
The [`moddable` git repo](https://github.com/Moddable-OpenSource/moddable) is cloned into `~/.local/share` instead of a new/existing `~/Projects` directory.
|
|
30
30
|
|
|
31
|
+
## Target Branch
|
|
32
|
+
|
|
33
|
+
The default behavior of this command for Moddable developer tooling pulls the [latest release tooling](https://github.com/Moddable-OpenSource/moddable/releases) and source code for the associated tagged branch. This provides a known-working state for the SDK and avoids needing to build the tooling on the local machine.
|
|
34
|
+
|
|
35
|
+
To override this behavior, use the `--target-branch` flag to select `public`; this fetches the latest commit off that main branch and runs the build to generate the associated tools.
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
xs-dev setup --target-branch public
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
_This will only work for the `mac`, `windows`, and `linux` device options, which are the respective defaults for the operating system on which the command is run._
|
|
42
|
+
|
|
31
43
|
## Device Setup
|
|
32
44
|
|
|
33
45
|
While the `setup` command provides the Moddable SDK for the dev environment, the `--device` flag selects another platform target SDK to set up. It ensures the Moddable SDK has been installed first.
|
|
@@ -12,6 +12,22 @@ Stay up to date with the latest tooling from Moddable and supported device targe
|
|
|
12
12
|
xs-dev update
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
+
## Target Branch
|
|
16
|
+
|
|
17
|
+
The default behavior of this command for Moddable developer tooling pulls the [latest release tooling](https://github.com/Moddable-OpenSource/moddable/releases) and source code for the associated tagged branch. This provides a known-working state for the SDK and avoids needing to build the tooling on the local machine.
|
|
18
|
+
|
|
19
|
+
To override this behavior, use the `--target-branch` flag to select `public`; this fetches the latest commit off that main branch and runs the build to generate the associated tools.
|
|
20
|
+
|
|
21
|
+
```
|
|
22
|
+
xs-dev setup --target-branch public
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
_This will only work for the `mac`, `windows`, and `linux` device options, which are the respective defaults for the operating system on which the command is run._
|
|
26
|
+
|
|
27
|
+
## Device Updates
|
|
28
|
+
|
|
29
|
+
While the `update` command provides the latest Moddable SDK for the dev environment, the `--device` flag selects another platform target SDK to set up. It ensures the Moddable SDK has been installed first.
|
|
30
|
+
|
|
15
31
|
The `--device` flag allows for selecting a different target platform:
|
|
16
32
|
|
|
17
33
|
```
|
package/docs/tsconfig.json
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xs-dev",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.16.0",
|
|
4
4
|
"description": "CLI for automating the setup and usage of Moddable XS tools",
|
|
5
5
|
"types": "build/types/types.d.ts",
|
|
6
6
|
"bin": {
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
"url": "https://github.com/HipsterBrown/xs-dev.git"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
+
"@octokit/rest": "^19.0.3",
|
|
23
24
|
"axios": "^0.24.0",
|
|
24
25
|
"gluegun": "^5.0.0",
|
|
25
26
|
"serialport": "^10.3.0",
|
|
@@ -29,11 +30,10 @@
|
|
|
29
30
|
"usb": "^2.2.0"
|
|
30
31
|
},
|
|
31
32
|
"devDependencies": {
|
|
32
|
-
"@astrojs/lit": "^0.
|
|
33
|
-
"@astrojs/
|
|
34
|
-
"@astrojs/
|
|
35
|
-
"@astrojs/
|
|
36
|
-
"@astrojs/tailwind": "^0.2.1",
|
|
33
|
+
"@astrojs/lit": "^1.0.0",
|
|
34
|
+
"@astrojs/preact": "^1.0.1",
|
|
35
|
+
"@astrojs/sitemap": "^1.0.0",
|
|
36
|
+
"@astrojs/tailwind": "^1.0.0",
|
|
37
37
|
"@changesets/cli": "^2.19.0",
|
|
38
38
|
"@types/jest": "^27.4.0",
|
|
39
39
|
"@types/node": "^16.11.0",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"@typescript-eslint/eslint-plugin": "^4.0.1",
|
|
44
44
|
"@typescript-eslint/parser": "^4.0.0",
|
|
45
45
|
"@webcomponents/template-shadowroot": "^0.1.0",
|
|
46
|
-
"astro": "^1.0.
|
|
46
|
+
"astro": "^1.0.2",
|
|
47
47
|
"eslint": "^7.12.1",
|
|
48
48
|
"eslint-config-prettier": "^8.3.0",
|
|
49
49
|
"eslint-config-standard-with-typescript": "^21.0.1",
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"preact-render-to-string": "^5.2.0",
|
|
58
58
|
"prettier": "^2.5.1",
|
|
59
59
|
"ts-jest": "^27.1.0",
|
|
60
|
-
"ts-node": "^10.
|
|
60
|
+
"ts-node": "^10.9.1",
|
|
61
61
|
"typescript": "^4.7.3"
|
|
62
62
|
},
|
|
63
63
|
"jest": {
|