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
 
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xs-dev",
3
- "version": "0.33.1",
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 PIOASM_PATH = gluegun_1.filesystem.resolve(PICO_SDK_BUILD_DIR, 'pioasm', 'pioasm');
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 instal directory and Moddable exists
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 master ${PICOTOOL_REPO} ${PICOTOOL_PATH}`, {
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGljby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90b29sYm94L3NldHVwL3BpY28udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFTQSw0QkF3TEM7QUFqTUQscUNBQW1EO0FBQ25ELDJCQUF5QztBQUN6QywyQ0FBNEQ7QUFDNUQsZ0VBQXVDO0FBQ3ZDLG9DQUEwRDtBQUMxRCx3Q0FBOEQ7QUFDOUQseUNBQTJDO0FBQzNDLHlDQUFrRDtBQUVuQyxLQUFLO0lBQ2xCLE1BQU0sRUFBRSxHQUFHLElBQUEsU0FBWSxHQUFFLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDdkMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFBO0lBQzNCLE1BQU0sYUFBYSxHQUFHLHlDQUF5QyxDQUFBO0lBQy9ELE1BQU0sZ0JBQWdCLEdBQUcsNENBQTRDLENBQUE7SUFDckUsTUFBTSxrQkFBa0IsR0FBRyw4Q0FBOEMsQ0FBQTtJQUN6RSxNQUFNLGFBQWEsR0FBRyx5Q0FBeUMsQ0FBQTtJQUMvRCxNQUFNLFNBQVMsR0FDYixPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsSUFBSSxvQkFBVSxDQUFDLE9BQU8sQ0FBQyx1QkFBVyxFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQ2xFLE1BQU0sWUFBWSxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxVQUFVLENBQUMsQ0FBQTtJQUM5RCxNQUFNLGVBQWUsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsYUFBYSxDQUFDLENBQUE7SUFDcEUsTUFBTSxrQkFBa0IsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLENBQUE7SUFDekUsTUFBTSxhQUFhLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFBO0lBQy9ELE1BQU0sa0JBQWtCLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLE9B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
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.1",
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",