xs-dev 0.33.1 β 0.33.2
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/README.md
CHANGED
|
@@ -132,6 +132,18 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
|
|
|
132
132
|
<table>
|
|
133
133
|
<tr>
|
|
134
134
|
<td align="center"><a href="https://hipsterbrown.com/"><img src="https://avatars.githubusercontent.com/u/3051193?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Nick Hehr</b></sub></a><br /><a href="https://github.com/HipsterBrown/xs-dev/commits?author=HipsterBrown" title="Documentation">π</a> <a href="#infra-HipsterBrown" title="Infrastructure (Hosting, Build-Tools, etc)">π</a> <a href="https://github.com/HipsterBrown/xs-dev/commits?author=HipsterBrown" title="Code">π»</a></td>
|
|
135
|
+
<td align="center"><a href="https://moddable.com/"><img src="https://avatars.githubusercontent.com/u/1427817?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Andy Carle</b></sub></a><br /><a href="https://github.com/HipsterBrown/xs-dev/commits?author=andycarle" title="Code">π»</a></td>
|
|
136
|
+
<td align="center"><a href="https://moddable.com/"><img src="https://avatars.githubusercontent.com/u/6856458?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Peter Hoddie</b></sub></a><br /><a href="https://github.com/HipsterBrown/xs-dev/commits?author=phoddie" title="Code">π»</a></td>
|
|
137
|
+
<td align="center"><a href="https://github.com/stc1988"><img src="https://avatars.githubusercontent.com/u/11245747?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Satoshi Tanaka</b></sub></a><br /><a href="https://github.com/HipsterBrown/xs-dev/commits?author=stc1988" title="Code">π»</a></td>
|
|
138
|
+
<td align="center"><a href="https://linktr.ee/scr34mz"><img src="https://avatars.githubusercontent.com/u/6640835?v=4?s=100" width="100px;" alt=""/><br /><sub><b>AndrΓ©as Hanss</b></sub></a><br /><a href="https://github.com/HipsterBrown/xs-dev/commits?author=ScreamZ" title="Documentation">π</a></td>
|
|
139
|
+
<td align="center"><a href="https://github.com/intGus"><img src="https://avatars.githubusercontent.com/u/46197948?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Gustavo</b></sub></a><br /><a href="https://github.com/HipsterBrown/xs-dev/commits?author=intGus" title="Code">π»</a></td>
|
|
140
|
+
<td align="center"><a href="https://github.com/gibson042"><img src="https://avatars.githubusercontent.com/u/1199584?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Richard Gibson</b></sub></a><br /><a href="https://github.com/HipsterBrown/xs-dev/commits?author=gibson042" title="Documentation">π</a></td>
|
|
141
|
+
</tr>
|
|
142
|
+
<tr>
|
|
143
|
+
<td align="center"><a href="https://dev-portfolio-jay.netlify.app/"><img src="https://avatars.githubusercontent.com/u/115918351?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Jay Kesarkar</b></sub></a><br /><a href="https://github.com/HipsterBrown/xs-dev/commits?author=jaykesarkar" title="Code">π»</a></td>
|
|
144
|
+
<td align="center"><a href="https://gustavo.is"><img src="https://avatars.githubusercontent.com/u/51838513?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Gustavo Gallegos</b></sub></a><br /><a href="https://github.com/HipsterBrown/xs-dev/commits?author=pricklywiggles" title="Documentation">π</a></td>
|
|
145
|
+
<td align="center"><a href="http://dtex.github.com"><img src="https://avatars.githubusercontent.com/u/854911?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Donovan Buck</b></sub></a><br /><a href="https://github.com/HipsterBrown/xs-dev/commits?author=dtex" title="Code">π»</a></td>
|
|
146
|
+
<td align="center"><a href="https://github.com/mkellner"><img src="https://avatars.githubusercontent.com/u/6822704?v=4?s=100" width="100px;" alt=""/><br /><sub><b>Michael Kellner</b></sub></a><br /><a href="https://github.com/HipsterBrown/xs-dev/commits?author=mkellner" title="Code">π»</a></td>
|
|
135
147
|
</tr>
|
|
136
148
|
</table>
|
|
137
149
|
|
package/build/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xs-dev",
|
|
3
|
-
"version": "0.33.
|
|
3
|
+
"version": "0.33.2",
|
|
4
4
|
"description": "CLI for automating the setup and usage of Moddable XS tools",
|
|
5
5
|
"types": "build/types/types.d.ts",
|
|
6
6
|
"engines": {
|
|
@@ -75,6 +75,7 @@
|
|
|
75
75
|
"@types/unzip-stream": "^0.3.1",
|
|
76
76
|
"@typescript-eslint/eslint-plugin": "^8.1.0",
|
|
77
77
|
"@typescript-eslint/parser": "^8.1.0",
|
|
78
|
+
"all-contributors-cli": "^6.26.1",
|
|
78
79
|
"astro": "4.13.3",
|
|
79
80
|
"auto": "^11.2.1",
|
|
80
81
|
"eslint": "^8.57.0",
|
|
@@ -26,11 +26,13 @@ async function default_1() {
|
|
|
26
26
|
const PICOTOOL_PATH = gluegun_1.filesystem.resolve(PICO_ROOT, 'picotool');
|
|
27
27
|
const PICOTOOL_BUILD_DIR = gluegun_1.filesystem.resolve(PICOTOOL_PATH, 'build');
|
|
28
28
|
const PICO_SDK_BUILD_DIR = gluegun_1.filesystem.resolve(PICO_SDK_DIR, 'build');
|
|
29
|
-
const
|
|
29
|
+
const PIOASM_TOOL_PATH = gluegun_1.filesystem.resolve(PICO_SDK_DIR, 'tools', 'pioasm');
|
|
30
|
+
const PIOASM_BUILD_PATH = gluegun_1.filesystem.resolve(PICO_SDK_BUILD_DIR, 'pioasm');
|
|
31
|
+
const PIOASM_PATH = gluegun_1.filesystem.resolve(PIOASM_BUILD_PATH, 'pioasm');
|
|
30
32
|
await (0, exec_1.sourceEnvironment)();
|
|
31
33
|
const spinner = gluegun_1.print.spin();
|
|
32
34
|
spinner.start('Starting pico tooling setup');
|
|
33
|
-
// 0. ensure pico
|
|
35
|
+
// 0. ensure pico install directory and Moddable exists
|
|
34
36
|
if (!(0, moddable_1.moddableExists)()) {
|
|
35
37
|
spinner.fail('Moddable platform tooling required. Run `xs-dev setup` before trying again.');
|
|
36
38
|
process.exit(1);
|
|
@@ -83,7 +85,7 @@ async function default_1() {
|
|
|
83
85
|
}
|
|
84
86
|
if (gluegun_1.filesystem.exists(PICOTOOL_PATH) === false) {
|
|
85
87
|
spinner.start('Cloning picotool repo');
|
|
86
|
-
await gluegun_1.system.exec(`git clone --depth 1 --single-branch -b
|
|
88
|
+
await gluegun_1.system.exec(`git clone --depth 1 --single-branch -b ${PICO_BRANCH} ${PICOTOOL_REPO} ${PICOTOOL_PATH}`, {
|
|
87
89
|
stdout: process.stdout,
|
|
88
90
|
});
|
|
89
91
|
spinner.succeed();
|
|
@@ -120,6 +122,18 @@ async function default_1() {
|
|
|
120
122
|
stdout: process.stdout,
|
|
121
123
|
cwd: PICO_SDK_BUILD_DIR,
|
|
122
124
|
});
|
|
125
|
+
// Build pioasm
|
|
126
|
+
gluegun_1.filesystem.dir(PIOASM_BUILD_PATH);
|
|
127
|
+
await gluegun_1.system.exec(`cmake ${PIOASM_TOOL_PATH}`, {
|
|
128
|
+
shell: process.env.SHELL,
|
|
129
|
+
stdout: process.stdout,
|
|
130
|
+
cwd: PIOASM_BUILD_PATH,
|
|
131
|
+
});
|
|
132
|
+
await gluegun_1.system.exec('make', {
|
|
133
|
+
shell: process.env.SHELL,
|
|
134
|
+
stdout: process.stdout,
|
|
135
|
+
cwd: PIOASM_BUILD_PATH,
|
|
136
|
+
});
|
|
123
137
|
spinner.succeed();
|
|
124
138
|
}
|
|
125
139
|
// 5. Build _the_ picotool
|
|
@@ -162,4 +176,4 @@ Test out the setup by starting a new terminal session and putting the device int
|
|
|
162
176
|
Then run: xs-dev run --example helloworld --device pico
|
|
163
177
|
`);
|
|
164
178
|
}
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGljby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90b29sYm94L3NldHVwL3BpY28udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFTQSw0QkF3TUM7QUFqTkQscUNBQW1EO0FBQ25ELDJCQUF5QztBQUN6QywyQ0FBNEQ7QUFDNUQsZ0VBQXVDO0FBQ3ZDLG9DQUEwRDtBQUMxRCx3Q0FBOEQ7QUFDOUQseUNBQTJDO0FBQzNDLHlDQUFrRDtBQUVuQyxLQUFLO0lBQ2xCLE1BQU0sRUFBRSxHQUFHLElBQUEsU0FBWSxHQUFFLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDdkMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFBO0lBQzNCLE1BQU0sYUFBYSxHQUFHLHlDQUF5QyxDQUFBO0lBQy9ELE1BQU0sZ0JBQWdCLEdBQUcsNENBQTRDLENBQUE7SUFDckUsTUFBTSxrQkFBa0IsR0FBRyw4Q0FBOEMsQ0FBQTtJQUN6RSxNQUFNLGFBQWEsR0FBRyx5Q0FBeUMsQ0FBQTtJQUMvRCxNQUFNLFNBQVMsR0FDYixPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsSUFBSSxvQkFBVSxDQUFDLE9BQU8sQ0FBQyx1QkFBVyxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQ2xFLE1BQU0sWUFBWSxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQTtJQUM5RCxNQUFNLGVBQWUsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUE7SUFDcEUsTUFBTSxrQkFBa0IsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLENBQUE7SUFDekUsTUFBTSxhQUFhLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFBO0lBQy9ELE1BQU0sa0JBQWtCLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLE9B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
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Usage with TypeScript
|
|
3
|
+
description: Initialize a new project with TypeScript and start to interact with some hardware!
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
import { Aside } from '@astrojs/starlight/components'
|
|
7
|
+
|
|
8
|
+
Using [TypeScript](https://www.typescriptlang.org/) is an industry standard in 2024. It provides a lot of benefits over JavaScript, such as static type checking, better code completion, and improved code readability. This guide will show you how to use TypeScript with the Moddable SDK.
|
|
9
|
+
|
|
10
|
+
# Prerequisites
|
|
11
|
+
|
|
12
|
+
There are various ways to start a new project with TypeScript. There are also many way to do it using the Moddable SDK. The following guide is opinionated and will use a specific setup. You can adapt it to your needs. But this looks like a good starting point close to the web development environment.
|
|
13
|
+
|
|
14
|
+
In the following statement of this guide we will use [pnpm](https://pnpm.io/installation) as our package manager. You can use any other while this is recommended. Adapt your commands accordingly if so.
|
|
15
|
+
|
|
16
|
+
## Let's get started
|
|
17
|
+
|
|
18
|
+
This starter project aim to build a single JS file that will be passed to XS. This helps developers coming from the web to have a more familiar environment and also to have a better development experience.
|
|
19
|
+
|
|
20
|
+
For this purpose, we will use a bundler tool which is very popular in the JavaScript community, especially in the web development where you want to reduce the number of network request and optimize the JS bundle from the server. There are many tools available to help you with this task. Tools like Webpack, Rollup, and esbuild are popular choices for bundling JavaScript code.
|
|
21
|
+
For this guide, as the bundler we will use [Bun](https://bun.sh/), which is a JavaScript Environment, but also a bundler/transpiler. It is a very simple tool that allows you to write your code in TypeScript and bundle it into a single file. If you use [mise-en-place](https://mise.jdx.dev/getting-started.html), you can install it with the following command:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
mise install bun
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Otherwise follow the instructions on the [Bun website](https://bun.sh/).
|
|
28
|
+
|
|
29
|
+
Now we will use a [starter template](https://github.com/ScreamZ/xs-dev-Typescript-template) that has setup everything for us upfront.
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
bunx tiged ScreamZ/xs-dev-TypeScript-template ts-xs-project
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
<Aside>
|
|
36
|
+
`tiged` is the CLI that wraps around git clone, while `bunx` allows for
|
|
37
|
+
running package commands without globally installing said package (similar to
|
|
38
|
+
npx, pnpx, and yarn dlx). This is useful when you want to start a new project
|
|
39
|
+
from a template.
|
|
40
|
+
</Aside>
|
|
41
|
+
|
|
42
|
+
## Specializing the starter template for your project
|
|
43
|
+
|
|
44
|
+
The first thing you need to do is to update the `package.json` file with your project details. You can do this by following those instructions:
|
|
45
|
+
|
|
46
|
+
1. Update `name` property with your project name.
|
|
47
|
+
2. Update `author` property with your name.
|
|
48
|
+
3. Follow the remaining instruction on the GitHub [https://github.com/ScreamZ/xs-dev-Typescript-template](https://github.com/ScreamZ/xs-dev-Typescript-template)
|
|
49
|
+
|
|
50
|
+
## How does it work?
|
|
51
|
+
|
|
52
|
+
The template is a simple project that uses Bun to bundle the TypeScript code into a single file. The TypeScript code is located in the `src` folder, and the bundled code is located in the `dist` folder.
|
|
53
|
+
|
|
54
|
+
The starter exposes a `pnpm dev` command that watch for changes in the `src` folder and automatically recompile the code. This is very useful when you are developing your project. You should keep this command running in a terminal window while you are working on your project.
|
|
55
|
+
|
|
56
|
+
When you need to try the code, simply run `xs-dev run` in the terminal. This will upload the bundled code from `dist/main.js` to the device and run it. The rest remains the same as the standard xs-dev workflow.
|
|
57
|
+
|
|
58
|
+
Take note that whenever you import some code from the Moddable SDK, you will need to add the following line in the `tsconfig.json` file:
|
|
59
|
+
|
|
60
|
+
```json
|
|
61
|
+
"types": [
|
|
62
|
+
// ... Previous lines
|
|
63
|
+
"./node_modules/@moddable/typings/<path-to-the-file>"
|
|
64
|
+
]
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Those typings are provided by [`@moddable/typings` package](https://github.com/Moddable-OpenSource/moddable/tree/4142d4d353960ea7ede15d56864d841de692a68d/typings), and while at the moment this is a bit cumbersome, it's up to you to find the correct definition file for the module you are using.
|
|
68
|
+
|
|
69
|
+
As an example, the Timer and WiFi modules live in `./node_modules/@moddable/typings/wifi` and `./node_modules/@moddable/typings/timer`
|
|
70
|
+
|
|
71
|
+
The team is actively working on improving the development workflow.
|
|
72
|
+
|
|
73
|
+
<Aside>
|
|
74
|
+
As modules from the Moddable SDK are not available inside node_modules and
|
|
75
|
+
injected on build, the bundler do not bundle them thanks to the `--packages
|
|
76
|
+
external` argument.
|
|
77
|
+
</Aside>
|
|
78
|
+
|
|
79
|
+
# Deploying to production
|
|
80
|
+
|
|
81
|
+
When you are ready to deploy your project to production, you can run the following command:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
pnpm run build:release
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
This will bundle the TypeScript code into a single file and minify it (compress into a single line of code and compress variables names). The bundled code will be located in the `dist` folder. You can then upload this code to your device following the [standard xs-dev workflow](/features/run#building-projects-for-release).
|
|
88
|
+
|
|
89
|
+
As an example to build for an ESP32 device:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
xs-dev build --device esp32
|
|
93
|
+
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "xs-dev",
|
|
3
|
-
"version": "0.33.
|
|
3
|
+
"version": "0.33.2",
|
|
4
4
|
"description": "CLI for automating the setup and usage of Moddable XS tools",
|
|
5
5
|
"types": "build/types/types.d.ts",
|
|
6
6
|
"engines": {
|
|
@@ -75,6 +75,7 @@
|
|
|
75
75
|
"@types/unzip-stream": "^0.3.1",
|
|
76
76
|
"@typescript-eslint/eslint-plugin": "^8.1.0",
|
|
77
77
|
"@typescript-eslint/parser": "^8.1.0",
|
|
78
|
+
"all-contributors-cli": "^6.26.1",
|
|
78
79
|
"astro": "4.13.3",
|
|
79
80
|
"auto": "^11.2.1",
|
|
80
81
|
"eslint": "^8.57.0",
|