xs-dev 0.14.2 → 0.15.1
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 +4 -0
- package/build/commands/include.js +9 -7
- package/build/commands/remove.js +5 -5
- package/build/commands/scan.js +8 -4
- package/build/toolbox/setup/esp32.js +2 -2
- package/build/toolbox/setup/fontbm.js +7 -3
- package/build/toolbox/update/esp32.js +4 -4
- package/docs/astro.config.mjs +13 -0
- package/docs/public/favicon.ico +0 -0
- package/docs/public/make-scrollable-code-focusable.js +3 -0
- package/docs/src/components/Footer/AvatarList.astro +149 -0
- package/docs/src/components/Footer/Footer.astro +16 -0
- package/docs/src/components/HeadCommon.astro +41 -0
- package/docs/src/components/HeadSEO.astro +34 -0
- package/docs/src/components/Header/Header.astro +133 -0
- package/docs/src/components/Header/LanguageSelect.css +47 -0
- package/docs/src/components/Header/LanguageSelect.tsx +49 -0
- package/docs/src/components/Header/Search.css +39 -0
- package/docs/src/components/Header/Search.tsx +65 -0
- package/docs/src/components/Header/SidebarToggle.tsx +44 -0
- package/docs/src/components/Header/SkipToContent.astro +22 -0
- package/docs/src/components/LeftSidebar/LeftSidebar.astro +118 -0
- package/docs/src/components/PageContent/PageContent.astro +41 -0
- package/docs/src/components/RightSidebar/MoreMenu.astro +70 -0
- package/docs/src/components/RightSidebar/RightSidebar.astro +27 -0
- package/docs/src/components/RightSidebar/TableOfContents.tsx +49 -0
- package/docs/src/components/RightSidebar/ThemeToggleButton.css +37 -0
- package/docs/src/components/RightSidebar/ThemeToggleButton.tsx +83 -0
- package/docs/src/config.ts +43 -0
- package/docs/src/languages.ts +10 -0
- package/docs/src/layouts/MainLayout.astro +122 -0
- package/docs/src/pages/en/features/include.md +48 -0
- package/docs/src/pages/en/features/init.md +57 -0
- package/docs/src/pages/en/features/run.md +63 -0
- package/docs/src/pages/en/features/scan.md +28 -0
- package/docs/src/pages/en/features/setup.md +55 -0
- package/docs/src/pages/en/features/teardown.md +13 -0
- package/docs/src/pages/en/features/update.md +21 -0
- package/docs/src/pages/en/introduction.md +68 -0
- package/docs/src/pages/index.astro +5 -0
- package/docs/src/pages/search-index.json.ts +18 -0
- package/docs/src/styles/index.css +382 -0
- package/docs/src/styles/theme.css +125 -0
- package/docs/tailwind.config.cjs +7 -0
- package/docs/tsconfig.json +15 -0
- package/package.json +24 -6
- package/docs/commands.md +0 -3
- package/docs/plugins.md +0 -47
package/README.md
CHANGED
|
@@ -334,3 +334,7 @@ To maintain the alias between shell sessions, for example I use zsh:
|
|
|
334
334
|
```
|
|
335
335
|
echo "alias local-xs-dev=$PWD/bin/xs-dev" >> ~/.zshrc
|
|
336
336
|
```
|
|
337
|
+
|
|
338
|
+
## Docs
|
|
339
|
+
|
|
340
|
+
The documentation site is built with [Astro](https://astro.build) and can be found in the `docs/` directory. When working on them locally, run `pnpm start:docs` to start the development server that watches for file changes and reloads the page.
|
|
@@ -13,7 +13,7 @@ const command = {
|
|
|
13
13
|
}
|
|
14
14
|
const modulesPath = filesystem.resolve(String(process.env.MODDABLE), 'modules');
|
|
15
15
|
let moduleName = parameters.first;
|
|
16
|
-
const { device =
|
|
16
|
+
const { device = '' } = parameters.options;
|
|
17
17
|
if (moduleName === undefined ||
|
|
18
18
|
filesystem.exists(filesystem.resolve(modulesPath, moduleName, 'manifest.json')) === false) {
|
|
19
19
|
// prompt with choices from $MODDABLE/modules
|
|
@@ -21,13 +21,15 @@ const command = {
|
|
|
21
21
|
const choices = modules !== undefined
|
|
22
22
|
? modules.map((mod) => (0, choices_1.collectChoicesFromTree)(mod)).flat()
|
|
23
23
|
: [];
|
|
24
|
-
const filtered =
|
|
24
|
+
const filtered = moduleName !== undefined
|
|
25
|
+
? choices.filter((mod) => mod.includes(String(moduleName)))
|
|
26
|
+
: choices;
|
|
25
27
|
const { mod: selectedModule } = await prompt.ask([
|
|
26
28
|
{
|
|
27
29
|
type: 'autocomplete',
|
|
28
30
|
name: 'mod',
|
|
29
31
|
message: 'Here are the available modules:',
|
|
30
|
-
choices:
|
|
32
|
+
choices: filtered.length > 0 ? filtered : choices,
|
|
31
33
|
},
|
|
32
34
|
]);
|
|
33
35
|
moduleName = selectedModule;
|
|
@@ -38,14 +40,14 @@ const command = {
|
|
|
38
40
|
var _a, _b;
|
|
39
41
|
var _c;
|
|
40
42
|
let manifest = manifestIn;
|
|
41
|
-
if (device !==
|
|
43
|
+
if (device !== '') {
|
|
42
44
|
(_a = manifest.platforms) !== null && _a !== void 0 ? _a : (manifest.platforms = {});
|
|
43
45
|
(_b = (_c = manifest.platforms)[device]) !== null && _b !== void 0 ? _b : (_c[device] = {});
|
|
44
46
|
manifest = manifest.platforms[device];
|
|
45
47
|
}
|
|
46
|
-
if (!(
|
|
48
|
+
if (!('include' in manifest))
|
|
47
49
|
manifest.include = [];
|
|
48
|
-
if (typeof manifest.include ===
|
|
50
|
+
if (typeof manifest.include === 'string')
|
|
49
51
|
manifest.include = [manifest.include];
|
|
50
52
|
if (manifest.include.includes(modulePath) === false) {
|
|
51
53
|
manifest.include.push(modulePath);
|
|
@@ -58,4 +60,4 @@ const command = {
|
|
|
58
60
|
},
|
|
59
61
|
};
|
|
60
62
|
exports.default = command;
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
63
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5jbHVkZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9pbmNsdWRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQ0EsdURBQWtFO0FBTWxFLE1BQU0sT0FBTyxHQUFtQjtJQUM5QixJQUFJLEVBQUUsU0FBUztJQUNmLFdBQVcsRUFBRSwyREFBMkQ7SUFDeEUsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsRUFBRSxFQUFFOztRQUNqRSxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxlQUFlLENBQUMsQ0FBQTtRQUN2RSxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssS0FBSyxFQUFFO1lBQzdDLEtBQUssQ0FBQyxLQUFLLENBQ1Qsc0ZBQXNGLENBQ3ZGLENBQUE7WUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO1NBQ2hCO1FBQ0QsTUFBTSxXQUFXLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FDcEMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQzVCLFNBQVMsQ0FDVixDQUFBO1FBQ0QsSUFBSSxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQTtRQUNqQyxNQUFNLEVBQUUsTUFBTSxHQUFHLEVBQUUsRUFBRSxHQUFtQixVQUFVLENBQUMsT0FBTyxDQUFBO1FBRTFELElBQ0UsVUFBVSxLQUFLLFNBQVM7WUFDeEIsVUFBVSxDQUFDLE1BQU0sQ0FDZixVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxVQUFVLEVBQUUsZUFBZSxDQUFDLENBQzdELEtBQUssS0FBSyxFQUNYO1lBQ0EsNkNBQTZDO1lBQzdDLE1BQU0sT0FBTyxHQUFHLE1BQUEsVUFBVSxDQUFDLFdBQVcsQ0FBQyxX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
|
package/build/commands/remove.js
CHANGED
|
@@ -10,7 +10,7 @@ const command = {
|
|
|
10
10
|
process.exit(1);
|
|
11
11
|
}
|
|
12
12
|
const moduleName = parameters.first;
|
|
13
|
-
const { device =
|
|
13
|
+
const { device = '' } = parameters.options;
|
|
14
14
|
if (moduleName === undefined) {
|
|
15
15
|
print.error('Module name is required');
|
|
16
16
|
process.exit(1);
|
|
@@ -20,14 +20,14 @@ const command = {
|
|
|
20
20
|
var _a, _b;
|
|
21
21
|
var _c;
|
|
22
22
|
let manifest = manifestIn;
|
|
23
|
-
if (device !==
|
|
23
|
+
if (device !== '') {
|
|
24
24
|
(_a = manifest.platforms) !== null && _a !== void 0 ? _a : (manifest.platforms = {});
|
|
25
25
|
(_b = (_c = manifest.platforms)[device]) !== null && _b !== void 0 ? _b : (_c[device] = {});
|
|
26
26
|
manifest = manifest.platforms[device];
|
|
27
27
|
}
|
|
28
|
-
if (!(
|
|
28
|
+
if (!('include' in manifest))
|
|
29
29
|
return;
|
|
30
|
-
if (typeof manifest.include ===
|
|
30
|
+
if (typeof manifest.include === 'string')
|
|
31
31
|
manifest.include = [manifest.include];
|
|
32
32
|
const length = manifest.include.length;
|
|
33
33
|
manifest.include = manifest.include.filter((mod) => {
|
|
@@ -48,4 +48,4 @@ const command = {
|
|
|
48
48
|
},
|
|
49
49
|
};
|
|
50
50
|
exports.default = command;
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbW1hbmRzL3JlbW92ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQU1BLE1BQU0sT0FBTyxHQUFtQjtJQUM5QixJQUFJLEVBQUUsUUFBUTtJQUNkLFdBQVcsRUFBRSxnRUFBZ0U7SUFDN0UsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUU7UUFDekQsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUE7UUFDdkUsSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLEtBQUssRUFBRTtZQUM3QyxLQUFLLENBQUMsS0FBSyxDQUNULHNGQUFzRixDQUN2RixDQUFBO1lBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtTQUNoQjtRQUNELE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUE7UUFDbkMsTUFBTSxFQUFFLE1BQU0sR0FBRyxFQUFFLEVBQUUsR0FBa0IsVUFBVSxDQUFDLE9BQU8sQ0FBQTtRQUV6RCxJQUFJLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFDNUIsS0FBSyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO1lBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUE7U0FDaEI7UUFFRCxLQUFLLENBQUMsSUFBSSxDQUFDLGFBQWEsTUFBTSxDQUFDLFVBQVUsQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO1FBQ3JFLE1BQU0sUUFBUSxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFBRTs7O1lBQ2pELElBQUksUUFBUSxHQUFHLFVBQVUsQ0FBQTtZQUN6QixJQUFJLE1BQU0sS0FBSyxFQUFFLEVBQUU7Z0JBQ2pCLE1BQUEsUUFBUSxDQUFDLFNBQVMsb0NBQWxCLFFBQVEsQ0FBQyxTQUFTLEdBQUssRUFBRSxFQUFBO2dCQUN6QixZQUFBLFFBQVEsQ0FBQyxTQUFTLEVBQUMsTUFBTSx3Q0FBTixNQUFNLElBQU0sRUFBRSxFQUFBO2dCQUNqQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQTthQUN0QztZQUVELElBQUksQ0FBQyxDQUFDLFNBQVMsSUFBSSxRQUFRLENBQUM7Z0JBQUUsT0FBTTtZQUVwQyxJQUFJLE9BQU8sUUFBUSxDQUFDLE9BQU8sS0FBSyxRQUFRO2dCQUN0QyxRQUFRLENBQUMsT0FBTyxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBRXZDLE1BQU0sTUFBTSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFBO1lBQ3RDLFFBQVEsQ0FBQyxPQUFPLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRTtnQkFDekQsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFBO2dCQUN4QyxJQUFJLENBQUMsTUFBTTtvQkFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLGNBQWMsR0FBRyxFQUFFLENBQUMsQ0FBQTtnQkFFNUMsT0FBTyxNQUFNLENBQUE7WUFDZixDQUFDLENBQUMsQ0FBQTtZQUNGLElBQUksTUFBTSxLQUFLLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTTtnQkFDcEMsS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLFVBQVUsa0NBQWtDLENBQUMsQ0FBQTtZQUUvRCxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUM7Z0JBQUUsUUFBUSxDQUFDLE9BQU8sR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBO2lCQUNwRSxJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUM7Z0JBQUUsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFBO1lBRS9ELE9BQU8sVUFBVSxDQUFBO1FBQ25CLENBQUMsQ0FBQyxDQUFBO1FBQ0YsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUN4QixDQUFDO0NBQ0YsQ0FBQTtBQUVELGtCQUFlLE9BQU8sQ0FBQSJ9
|
package/build/commands/scan.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const serialport_1 = require("serialport");
|
|
4
|
+
const usb_1 = require("usb");
|
|
4
5
|
const parse_1 = require("../toolbox/scan/parse");
|
|
5
6
|
// eslint-disable-next-line
|
|
6
7
|
function sleep(timeout) {
|
|
@@ -34,19 +35,22 @@ const command = {
|
|
|
34
35
|
const result = await Promise.all(ports
|
|
35
36
|
.filter((port) => port.serialNumber !== undefined)
|
|
36
37
|
.map(async (port) => {
|
|
37
|
-
var _a;
|
|
38
|
+
var _a, _b;
|
|
38
39
|
try {
|
|
39
40
|
if (((_a = port.manufacturer) === null || _a === void 0 ? void 0 : _a.includes('Raspberry Pi')) === true &&
|
|
40
41
|
hasPicotool) {
|
|
42
|
+
const device = await (0, usb_1.findBySerialNumber)((_b = port.serialNumber) !== null && _b !== void 0 ? _b : '');
|
|
43
|
+
const bus = String(device === null || device === void 0 ? void 0 : device.busNumber);
|
|
44
|
+
const address = String(device === null || device === void 0 ? void 0 : device.deviceAddress);
|
|
41
45
|
return await system
|
|
42
|
-
.exec(`picotool info -fa`)
|
|
46
|
+
.exec(`picotool info --bus ${bus} --address ${address} -fa`)
|
|
43
47
|
.then((buffer) => [buffer, port.path]);
|
|
44
48
|
}
|
|
45
49
|
return await system
|
|
46
50
|
.exec(`esptool.py --port ${port.path} read_mac`)
|
|
47
51
|
.then((buffer) => [buffer, port.path]);
|
|
48
52
|
}
|
|
49
|
-
catch (
|
|
53
|
+
catch (_c) { }
|
|
50
54
|
return [undefined, port.path];
|
|
51
55
|
}));
|
|
52
56
|
const record = (0, parse_1.parseScanResult)(result);
|
|
@@ -64,4 +68,4 @@ const command = {
|
|
|
64
68
|
},
|
|
65
69
|
};
|
|
66
70
|
exports.default = command;
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Nhbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy9zY2FuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMkNBQXVDO0FBQ3ZDLDZCQUF3QztBQUd4QyxpREFBdUQ7QUFFdkQsMkJBQTJCO0FBQzNCLFNBQVMsS0FBSyxDQUFDLE9BQWU7SUFDNUIsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQzdCLFVBQVUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDOUIsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDO0FBRUQsTUFBTSxPQUFPLEdBQWlDO0lBQzVDLElBQUksRUFBRSxNQUFNO0lBQ1osV0FBVyxFQUFFLDRCQUE0QjtJQUN6QyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQ3JCLE1BQU0sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQTtRQUM3QyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRTtZQUN6QyxLQUFLLENBQUMsYUFBYSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7WUFDdEMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtTQUNoQjtRQUVELElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLEVBQUU7WUFDdkMsS0FBSyxDQUFDLE9BQU8sQ0FDWCwySkFBMkosQ0FDNUosQ0FBQTtTQUNGO1FBRUQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFBO1FBRTVCLE9BQU8sQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQTtRQUV4QyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksQ0FBQTtRQUVyRCxJQUFJ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
|
|
@@ -13,7 +13,7 @@ const linux_1 = require("./esp32/linux");
|
|
|
13
13
|
async function default_1() {
|
|
14
14
|
const OS = (0, os_1.type)().toLowerCase();
|
|
15
15
|
const ESP_IDF_REPO = 'https://github.com/espressif/esp-idf.git';
|
|
16
|
-
const ESP_BRANCH = 'v4.4';
|
|
16
|
+
const ESP_BRANCH = 'v4.4.2';
|
|
17
17
|
const ESP32_DIR = gluegun_1.filesystem.resolve(constants_1.INSTALL_DIR, 'esp32');
|
|
18
18
|
const IDF_PATH = gluegun_1.filesystem.resolve(ESP32_DIR, 'esp-idf');
|
|
19
19
|
const spinner = gluegun_1.print.spin();
|
|
@@ -67,4 +67,4 @@ async function default_1() {
|
|
|
67
67
|
`);
|
|
68
68
|
}
|
|
69
69
|
exports.default = default_1;
|
|
70
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNwMzIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbGJveC9zZXR1cC9lc3AzMi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHFDQUFtRDtBQUNuRCwyQkFBeUM7QUFDekMsMkNBQTREO0FBQzVELHlDQUEyQztBQUMzQyxnRUFBdUM7QUFDdkMscUNBQTJEO0FBQzNELHlDQUErRDtBQUVoRCxLQUFLO0lBQ2xCLE1BQU0sRUFBRSxHQUFHLElBQUEsU0FBWSxHQUFFLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDdkMsTUFBTSxZQUFZLEdBQUcsMENBQTBDLENBQUE7SUFDL0QsTUFBTSxVQUFVLEdBQUcsUUFBUSxDQUFBO0lBQzNCLE1BQU0sU0FBUyxHQUFHLG9CQUFVLENBQUMsT0FBTyxDQUFDLHVCQUFXLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDMUQsTUFBTSxRQUFRLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBRXpELE1BQU0sT0FBTyxHQUFHLGVBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQTtJQUM1QixPQUFPLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUE7SUFFdkMsNEJBQTRCO0lBQzVCLElBQUksQ0FBQyxJQUFBLHlCQUFjLEdBQUUsRUFBRTtRQUNyQixPQUFPLENBQUMsSUFBSSxDQUNWLG9FQUFvRSxDQUNyRSxDQUFBO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtLQUNoQjtJQUVELDJDQUEyQztJQUMzQyxPQUFPLENBQUMsSUFBSSxDQUFDLGtDQUFrQyxDQUFDLENBQUE7SUFDaEQsb0JBQVUsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUE7SUFFekIscURBQXFEO0lBQ3JELElBQUksb0JBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssS0FBSyxFQUFFO1FBQ3pDLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLENBQUMsQ0FBQTtRQUNyQyxNQUFNLGdCQUFNLENBQUMsS0FBSyxDQUNoQixnQkFBZ0IsVUFBVSxnQkFBZ0IsWUFBWSxJQUFJLFFBQVEsRUFBRSxDQUNyRSxDQUFBO1FBQ0QsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO0tBQ2xCO0lBRUQsd0NBQXdDO0lBQ3hDLE9BQU8sQ0FBQyxLQUFLLENBQUMsK0JBQStCLENBQUMsQ0FBQTtJQUU5QyxJQUFJLEVBQUUsS0FBSyxRQUFRLEVBQUU7UUFDbkIsTUFBTSxJQUFBLGlCQUFjLEVBQUMsT0FBTyxDQUFDLENBQUE7S0FDOUI7SUFFRCxJQUFJLEVBQUUsS0FBSyxPQUFPLEVBQUU7UUFDbEIsTUFBTSxJQUFBLG1CQUFnQixFQUFDLE9BQU8sQ0FBQyxDQUFBO0tBQ2hDO0lBRUQsaURBQWlEO0lBQ2pELElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEtBQUssU0FBUyxFQUFFO1FBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtRQUNyQyxPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUE7UUFDL0IsTUFBTSxJQUFBLGdCQUFNLEVBQUMsNkJBQWlCLEVBQUUsbUJBQW1CLFFBQVEsRUFBRSxDQUFDLENBQUE7S0FDL0Q7SUFFRCxvQ0FBb0M7SUFDcEMsT0FBTyxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFBO0lBQzNDLE1BQU0sZ0JBQU0sQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO1FBQ2hDLEdBQUcsRUFBRSxRQUFRO1FBQ2IsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSztRQUN4QixNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07S0FDdkIsQ0FBQyxDQUFBO0lBQ0YsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBRWpCLDBEQUEwRDtJQUMxRCxPQUFPLENBQUMsSUFBSSxDQUFDLDhCQUE4QixDQUFDLENBQUE7SUFDNUMsTUFBTSxJQUFBLGdCQUFNLEVBQUMsNkJBQWlCLEVBQUUseUNBQXlDLENBQUMsQ0FBQTtJQUMxRSxNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLDRCQUE0QixFQUFFO1FBQzlDLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUs7S0FDekIsQ0FBQyxDQUFBO0lBRUYsT0FBTyxDQUFDLE9BQU8sQ0FBQzs7OztHQUlmLENBQUMsQ0FBQTtBQUNKLENBQUM7QUF0RUQsNEJBc0VDIn0=
|
|
@@ -29,7 +29,9 @@ async function default_1() {
|
|
|
29
29
|
}
|
|
30
30
|
if (OS === 'linux') {
|
|
31
31
|
spinner.start('CMake required, installing with apt');
|
|
32
|
-
await (0, exec_1.execWithSudo)('apt-get install --yes build-essential cmake', {
|
|
32
|
+
await (0, exec_1.execWithSudo)('apt-get install --yes build-essential cmake', {
|
|
33
|
+
stdout: process.stdout,
|
|
34
|
+
});
|
|
33
35
|
spinner.succeed();
|
|
34
36
|
}
|
|
35
37
|
}
|
|
@@ -43,7 +45,9 @@ async function default_1() {
|
|
|
43
45
|
}
|
|
44
46
|
if (OS === 'linux') {
|
|
45
47
|
spinner.start('Installing libfreetype-dev');
|
|
46
|
-
await (0, exec_1.execWithSudo)('apt-get install --yes libfreetype-dev', {
|
|
48
|
+
await (0, exec_1.execWithSudo)('apt-get install --yes libfreetype-dev', {
|
|
49
|
+
stdout: process.stdout,
|
|
50
|
+
});
|
|
47
51
|
spinner.succeed();
|
|
48
52
|
}
|
|
49
53
|
// 3. clone fontbm
|
|
@@ -71,4 +75,4 @@ async function default_1() {
|
|
|
71
75
|
spinner.succeed('fontbm successfully set up!');
|
|
72
76
|
}
|
|
73
77
|
exports.default = default_1;
|
|
74
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
78
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9udGJtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rvb2xib3gvc2V0dXAvZm9udGJtLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEscUNBQW1EO0FBQ25ELDJDQUE0RDtBQUM1RCxnRUFBdUM7QUFDdkMsMkJBQXlDO0FBQ3pDLHFDQUE4QjtBQUM5Qix5Q0FBNkM7QUFFOUIsS0FBSztJQUNsQixNQUFNLE9BQU8sR0FBRyxlQUFLLENBQUMsSUFBSSxFQUFFLENBQUE7SUFDNUIsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO0lBRW5DLE1BQU0sRUFBRSxHQUFHLElBQUEsU0FBWSxHQUFFLENBQUMsV0FBVyxFQUFFLENBQUE7SUFDdkMsSUFBSSxFQUFFLEtBQUssUUFBUSxJQUFJLEVBQUUsS0FBSyxPQUFPLEVBQUU7UUFDckMsZUFBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsaUJBQWlCLENBQUMsQ0FBQTtRQUN2QyxJQUFBLGNBQUksRUFBQyxDQUFDLENBQUMsQ0FBQTtLQUNSO0lBRUQsTUFBTSxXQUFXLEdBQUcsZ0RBQWdELENBQUE7SUFDcEUsTUFBTSxVQUFVLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQUMsdUJBQVcsRUFBRSxRQUFRLENBQUMsQ0FBQTtJQUM1RCxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUE7SUFFM0IsbUJBQW1CO0lBQ25CLElBQUksZ0JBQU0sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFO1FBQ2xDLElBQUksRUFBRSxLQUFLLFFBQVEsRUFBRTtZQUNuQixPQUFPLENBQUMsS0FBSyxDQUFDLDBDQUEwQyxDQUFDLENBQUE7WUFDekQsTUFBTSxnQkFBTSxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFBO1lBQ3ZDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtTQUNsQjtRQUNELElBQUksRUFBRSxLQUFLLE9BQU8sRUFBRTtZQUNsQixPQUFPLENBQUMsS0FBSyxDQUFDLHFDQUFxQyxDQUFDLENBQUE7WUFDcEQsTUFBTSxJQUFBLG1CQUFZLEVBQUMsNkNBQTZDLEVBQUU7Z0JBQ2hFLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTthQUN2QixDQUFDLENBQUE7WUFDRixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7U0FDbEI7S0FDRjtJQUVELHNCQUFzQjtJQUN0QixJQUFJLEVBQUUsS0FBSyxRQUFRLEVBQUU7UUFDbkIsSUFBSSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLElBQUksRUFBRTtZQUM1QyxPQUFPLENBQUMsS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUE7WUFDNUQsTUFBTSxnQkFBTSxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO1lBQzFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQTtTQUNsQjtLQUNGO0lBQ0QsSUFBSSxFQUFFLEtBQUssT0FBTyxFQUFFO1FBQ2xCLE9BQU8sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLENBQUMsQ0FBQTtRQUMzQyxNQUFNLElBQUEsbUJBQVksRUFBQyx1Q0FBdUMsRUFBRTtZQUMxRCxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU07U0FDdkIsQ0FBQyxDQUFBO1FBQ0YsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO0tBQ2xCO0lBRUQsa0JBQWtCO0lBQ2xCLElBQUksb0JBQVUsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQUssS0FBSyxFQUFFO1FBQzNDLE9BQU8sQ0FBQyxLQUFLLENBQUMsNkJBQTZCLFVBQVUsSUFBSSxDQUFDLENBQUE7UUFDMUQsTUFBTSxnQkFBTSxDQUFDLEtBQUssQ0FDaEIsYUFBYSxXQUFXLGFBQWEsVUFBVSxJQUFJLFVBQVUsRUFBRSxDQUNoRSxDQUFBO1FBQ0QsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFBO0tBQ2xCO0lBRUQsa0JBQWtCO0lBQ2xCLE9BQU8sQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQTtJQUNoQyxNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRTtRQUMzQixHQUFHLEVBQUUsVUFBVTtRQUNmLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtLQUN2QixDQUFDLENBQUE7SUFDRixNQUFNLGdCQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUN4QixHQUFHLEVBQUUsVUFBVTtRQUNmLE1BQU0sRUFBRSxPQUFPLENBQUMsTUFBTTtLQUN2QixDQUFDLENBQUE7SUFDRixPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7SUFFakIscUNBQXFDO0lBQ3JDLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEtBQUssU0FBUyxFQUFFO1FBQ3BDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxHQUFHLEdBQUcsVUFBVSxTQUFTLENBQUE7UUFDM0MsTUFBTSxJQUFBLGdCQUFNLEVBQUMsNkJBQWlCLEVBQUUsaUJBQWlCLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQTtLQUN2RTtJQUVELE9BQU8sQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQUMsQ0FBQTtBQUNoRCxDQUFDO0FBMUVELDRCQTBFQyJ9
|
|
@@ -13,7 +13,7 @@ const linux_1 = require("../setup/esp32/linux");
|
|
|
13
13
|
async function default_1() {
|
|
14
14
|
var _a, _b;
|
|
15
15
|
const OS = (0, os_1.type)().toLowerCase();
|
|
16
|
-
const ESP_BRANCH = 'v4.4';
|
|
16
|
+
const ESP_BRANCH = 'v4.4.2';
|
|
17
17
|
const ESP32_DIR = gluegun_1.filesystem.resolve(constants_1.INSTALL_DIR, 'esp32');
|
|
18
18
|
const IDF_PATH = gluegun_1.filesystem.resolve(ESP32_DIR, 'esp-idf');
|
|
19
19
|
const spinner = gluegun_1.print.spin();
|
|
@@ -56,7 +56,7 @@ async function default_1() {
|
|
|
56
56
|
}
|
|
57
57
|
// remove sourced IDF_PATH/export settings before install
|
|
58
58
|
// https://github.com/espressif/esp-idf/issues/8314#issuecomment-1024881587
|
|
59
|
-
await gluegun_1.patching.replace(constants_1.EXPORTS_FILE_PATH, `source $IDF_PATH/export.sh\n`, '');
|
|
59
|
+
await gluegun_1.patching.replace(constants_1.EXPORTS_FILE_PATH, `source $IDF_PATH/export.sh 1> /dev/null\n`, '');
|
|
60
60
|
await gluegun_1.system.exec(`source ${constants_1.EXPORTS_FILE_PATH}`, {
|
|
61
61
|
shell: process.env.SHELL,
|
|
62
62
|
});
|
|
@@ -70,7 +70,7 @@ async function default_1() {
|
|
|
70
70
|
spinner.succeed();
|
|
71
71
|
// 6. append 'source $IDF_PATH/export.sh' to shell profile
|
|
72
72
|
spinner.info('Sourcing esp-idf environment');
|
|
73
|
-
await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `source $IDF_PATH/export.sh`);
|
|
73
|
+
await (0, upsert_1.default)(constants_1.EXPORTS_FILE_PATH, `source $IDF_PATH/export.sh 1> /dev/null\n`);
|
|
74
74
|
await gluegun_1.system.exec('source $IDF_PATH/export.sh', {
|
|
75
75
|
shell: process.env.SHELL,
|
|
76
76
|
});
|
|
@@ -86,4 +86,4 @@ async function default_1() {
|
|
|
86
86
|
`);
|
|
87
87
|
}
|
|
88
88
|
exports.default = default_1;
|
|
89
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
89
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNwMzIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbGJveC91cGRhdGUvZXNwMzIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxxQ0FBNkQ7QUFDN0QsMkJBQXlDO0FBQ3pDLGtEQUFtRTtBQUNuRSxnREFBa0Q7QUFDbEQsZ0VBQXVDO0FBQ3ZDLDRDQUFrRTtBQUNsRSxnREFBc0U7QUFFdkQsS0FBSzs7SUFDbEIsTUFBTSxFQUFFLEdBQUcsSUFBQSxTQUFZLEdBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUN2QyxNQUFNLFVBQVUsR0FBRyxRQUFRLENBQUE7SUFDM0IsTUFBTSxTQUFTLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQUMsdUJBQVcsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUMxRCxNQUFNLFFBQVEsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUE7SUFFekQsTUFBTSxPQUFPLEdBQUcsZUFBSyxDQUFDLElBQUksRUFBRSxDQUFBO0lBQzVCLE9BQU8sQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQTtJQUV4Qyw0QkFBNEI7SUFDNUIsSUFBSSxDQUFDLElBQUEseUJBQWMsR0FBRSxFQUFFO1FBQ3JCLE9BQU8sQ0FBQyxJQUFJLENBQ1Ysb0VBQW9FLENBQ3JFLENBQUE7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFBO0tBQ2hCO0lBRUQsMkNBQTJDO0lBQzNDLE9BQU8sQ0FBQyxJQUFJLENBQUMsa0NBQWtDLENBQUMsQ0FBQTtJQUNoRCxJQUNFLG9CQUFVLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEtBQUs7UUFDdEMsb0JBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssS0FBSyxFQUNyQztRQUNBLE9BQU8sQ0FBQyxJQUFJLENBQ1YsZ0ZBQWdGLENBQ2pGLENBQUE7UUFDRCxPQUFPLENBQUMsSUFB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
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { defineConfig } from 'astro/config'
|
|
2
|
+
|
|
3
|
+
import lit from '@astrojs/lit'
|
|
4
|
+
import preact from '@astrojs/preact'
|
|
5
|
+
import tailwind from '@astrojs/tailwind'
|
|
6
|
+
import sitemap from '@astrojs/sitemap'
|
|
7
|
+
|
|
8
|
+
// https://astro.build/config
|
|
9
|
+
export default defineConfig({
|
|
10
|
+
integrations: [preact(), lit(), tailwind(), sitemap()],
|
|
11
|
+
site: 'https://hipsterbrown.github.io',
|
|
12
|
+
base: '/xs-dev',
|
|
13
|
+
})
|
|
Binary file
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
---
|
|
2
|
+
// fetch all commits for just this page's path
|
|
3
|
+
const path = 'docs/' + Astro.props.path;
|
|
4
|
+
const url = `https://api.github.com/repos/hipsterbrown/xs-dev/commits?path=${path}`;
|
|
5
|
+
const commitsURL = `https://github.com/hipsterbrown/xs-dev/commits/main/${path}`;
|
|
6
|
+
|
|
7
|
+
async function getCommits(url) {
|
|
8
|
+
try {
|
|
9
|
+
const token = import.meta.env.PUBLIC_GITHUB_TOKEN;
|
|
10
|
+
if (!token) {
|
|
11
|
+
throw new Error('Cannot find "PUBLIC_GITHUB_TOKEN" used for escaping rate-limiting.');
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
const auth = `Basic ${Buffer.from(token, 'binary').toString('base64')}`;
|
|
15
|
+
|
|
16
|
+
const res = await fetch(url, {
|
|
17
|
+
method: 'GET',
|
|
18
|
+
headers: {
|
|
19
|
+
Authorization: auth,
|
|
20
|
+
'User-Agent': 'astro-docs/1.0',
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
const data = await res.json();
|
|
25
|
+
|
|
26
|
+
if (!res.ok) {
|
|
27
|
+
throw new Error(
|
|
28
|
+
`Request to fetch commits failed. Reason: ${res.statusText}
|
|
29
|
+
Message: ${data.message}`
|
|
30
|
+
);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
return data;
|
|
34
|
+
} catch (e) {
|
|
35
|
+
console.warn(`[error] /src/components/AvatarList.astro
|
|
36
|
+
${e?.message ?? e}`);
|
|
37
|
+
return new Array();
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
function removeDups(arr) {
|
|
42
|
+
if (!arr) {
|
|
43
|
+
return new Array();
|
|
44
|
+
}
|
|
45
|
+
let map = new Map();
|
|
46
|
+
|
|
47
|
+
for (let item of arr) {
|
|
48
|
+
let author = item.author;
|
|
49
|
+
// Deduplicate based on author.id
|
|
50
|
+
map.set(author.id, { login: author.login, id: author.id });
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
return Array.from(map.values());
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
const data = await getCommits(url);
|
|
57
|
+
const unique = removeDups(data);
|
|
58
|
+
const recentContributors = unique.slice(0, 3); // only show avatars for the 3 most recent contributors
|
|
59
|
+
const additionalContributors = unique.length - recentContributors.length; // list the rest of them as # of extra contributors
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
<!-- Thanks to @5t3ph for https://smolcss.dev/#smol-avatar-list! -->
|
|
63
|
+
<div class="contributors">
|
|
64
|
+
<ul class="avatar-list" style={`--avatar-count: ${recentContributors.length}`}>
|
|
65
|
+
{recentContributors.map((item) => (
|
|
66
|
+
<li>
|
|
67
|
+
<a href={`https://github.com/${item.login}`}>
|
|
68
|
+
<img alt={`Contributor ${item.login}`} title={`Contributor ${item.login}`} width="64" height="64" src={`https://avatars.githubusercontent.com/u/${item.id}`} />
|
|
69
|
+
</a>
|
|
70
|
+
</li>
|
|
71
|
+
))}
|
|
72
|
+
</ul>
|
|
73
|
+
{additionalContributors > 0 && (
|
|
74
|
+
<span>
|
|
75
|
+
<a href={commitsURL}>{`and ${additionalContributors} additional contributor${additionalContributors > 1 ? 's' : ''}.`}</a>
|
|
76
|
+
</span>
|
|
77
|
+
)}
|
|
78
|
+
{unique.length === 0 && <a href={commitsURL}>Contributors</a>}
|
|
79
|
+
</div>
|
|
80
|
+
|
|
81
|
+
<style>
|
|
82
|
+
.avatar-list {
|
|
83
|
+
--avatar-size: 2.5rem;
|
|
84
|
+
--avatar-count: 3;
|
|
85
|
+
|
|
86
|
+
display: grid;
|
|
87
|
+
list-style: none;
|
|
88
|
+
/* Default to displaying most of the avatar to
|
|
89
|
+
enable easier access on touch devices, ensuring
|
|
90
|
+
the WCAG touch target size is met or exceeded */
|
|
91
|
+
grid-template-columns: repeat(var(--avatar-count), max(44px, calc(var(--avatar-size) / 1.15)));
|
|
92
|
+
/* `padding` matches added visual dimensions of
|
|
93
|
+
the `box-shadow` to help create a more accurate
|
|
94
|
+
computed component size */
|
|
95
|
+
padding: 0.08em;
|
|
96
|
+
font-size: var(--avatar-size);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
@media (any-hover: hover) and (any-pointer: fine) {
|
|
100
|
+
.avatar-list {
|
|
101
|
+
/* We create 1 extra cell to enable the computed
|
|
102
|
+
width to match the final visual width */
|
|
103
|
+
grid-template-columns: repeat(calc(var(--avatar-count) + 1), calc(var(--avatar-size) / 1.75));
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
.avatar-list li {
|
|
108
|
+
width: var(--avatar-size);
|
|
109
|
+
height: var(--avatar-size);
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
.avatar-list li:hover ~ li a,
|
|
113
|
+
.avatar-list li:focus-within ~ li a {
|
|
114
|
+
transform: translateX(33%);
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.avatar-list img,
|
|
118
|
+
.avatar-list a {
|
|
119
|
+
display: block;
|
|
120
|
+
border-radius: 50%;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.avatar-list a {
|
|
124
|
+
transition: transform 180ms ease-in-out;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
.avatar-list img {
|
|
128
|
+
width: 100%;
|
|
129
|
+
height: 100%;
|
|
130
|
+
object-fit: cover;
|
|
131
|
+
background-color: #fff;
|
|
132
|
+
box-shadow: 0 0 0 0.05em #fff, 0 0 0 0.08em rgba(0, 0, 0, 0.15);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
.avatar-list a:focus {
|
|
136
|
+
outline: 2px solid transparent;
|
|
137
|
+
/* Double-layer trick to work for dark and light backgrounds */
|
|
138
|
+
box-shadow: 0 0 0 0.08em var(--theme-accent), 0 0 0 0.12em white;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
.contributors {
|
|
142
|
+
display: flex;
|
|
143
|
+
align-items: center;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
.contributors > * + * {
|
|
147
|
+
margin-left: 0.75rem;
|
|
148
|
+
}
|
|
149
|
+
</style>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
import AvatarList from './AvatarList.astro';
|
|
3
|
+
const { path } = Astro.props;
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<footer>
|
|
7
|
+
<AvatarList {path} />
|
|
8
|
+
</footer>
|
|
9
|
+
|
|
10
|
+
<style>
|
|
11
|
+
footer {
|
|
12
|
+
margin-top: auto;
|
|
13
|
+
padding: 2rem 0;
|
|
14
|
+
border-top: 3px solid var(--theme-divider);
|
|
15
|
+
}
|
|
16
|
+
</style>
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
---
|
|
2
|
+
import '../styles/theme.css';
|
|
3
|
+
import '../styles/index.css';
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<!-- Global Metadata -->
|
|
7
|
+
<meta charset="utf-8" />
|
|
8
|
+
<meta name="viewport" content="width=device-width" />
|
|
9
|
+
|
|
10
|
+
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
11
|
+
<link rel="alternate icon" type="image/x-icon" href="/favicon.ico" />
|
|
12
|
+
|
|
13
|
+
<link rel="sitemap" href="/sitemap.xml" />
|
|
14
|
+
|
|
15
|
+
<!-- Preload Fonts -->
|
|
16
|
+
<link rel="preconnect" href="https://fonts.googleapis.com" />
|
|
17
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
|
|
18
|
+
<link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:ital@0;1&display=swap" rel="stylesheet" />
|
|
19
|
+
|
|
20
|
+
<!-- Scrollable a11y code helper -->
|
|
21
|
+
<script src="/make-scrollable-code-focusable.js" is:inline></script>
|
|
22
|
+
|
|
23
|
+
<!-- This is intentionally inlined to avoid FOUC -->
|
|
24
|
+
<script is:inline>
|
|
25
|
+
const root = document.documentElement;
|
|
26
|
+
const theme = localStorage.getItem('theme');
|
|
27
|
+
if (theme === 'dark' || (!theme && window.matchMedia('(prefers-color-scheme: dark)').matches)) {
|
|
28
|
+
root.classList.add('theme-dark');
|
|
29
|
+
} else {
|
|
30
|
+
root.classList.remove('theme-dark');
|
|
31
|
+
}
|
|
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> -->
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
import { SITE, OPEN_GRAPH } from '../config.ts';
|
|
3
|
+
export interface Props {
|
|
4
|
+
content: any;
|
|
5
|
+
site: any;
|
|
6
|
+
canonicalURL: URL | string;
|
|
7
|
+
}
|
|
8
|
+
const { content = {}, canonicalURL } = Astro.props;
|
|
9
|
+
const formattedContentTitle = content.title ? `${content.title} 🚀 ${SITE.title}` : SITE.title;
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
<!-- Page Metadata -->
|
|
13
|
+
<link rel="canonical" href={canonicalURL} />
|
|
14
|
+
|
|
15
|
+
<!-- OpenGraph Tags -->
|
|
16
|
+
<meta property="og:title" content={formattedContentTitle} />
|
|
17
|
+
<meta property="og:type" content="article" />
|
|
18
|
+
<meta property="og:url" content={canonicalURL} />
|
|
19
|
+
<meta property="og:locale" content={content.ogLocale ?? SITE.defaultLanguage} />
|
|
20
|
+
<meta name="description" property="og:description" content={content.description ? content.description : SITE.description} />
|
|
21
|
+
<meta property="og:site_name" content={SITE.title} />
|
|
22
|
+
|
|
23
|
+
<!-- Twitter Tags -->
|
|
24
|
+
<meta name="twitter:card" content="summary_large_image" />
|
|
25
|
+
<meta name="twitter:site" content={OPEN_GRAPH.twitter} />
|
|
26
|
+
<meta name="twitter:title" content={formattedContentTitle} />
|
|
27
|
+
<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
|
+
-->
|