@ecmaos/kernel 0.2.3 → 0.2.4

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
@@ -91,31 +91,37 @@ The goal is to create a kernel and supporting apps that tie together modern web
91
91
  - Devices may also be directly read/written using `fs` methods, and will behave accordingly (or have no effect if not supported)
92
92
  - An individual device module can provide multiple device drivers, e.g. `/dev/usb` provides `/dev/usb-mydevice-0001-0002`
93
93
 
94
+ - `Generators`
95
+ - Generators are used to scaffold new apps, devices, modules, etc.
96
+ - They are located in the `turbo/generators` directory of the repository
97
+ - They are used by the `turbo gen` command, e.g. `turbo gen app`, `turbo gen device`, `turbo gen module`, etc.
98
+
94
99
  - `Jaffa`
95
100
  - Jaffa is a [Tauri](https://tauri.app) wrapper for the ecmaOS kernel
96
101
  - It's used to tie the kernel into a desktop or mobile environment, allowing for native functionality
97
102
 
98
103
  - `Kernel`
99
- - Authentication (WebAuthn)
100
- - Components (Web Components/Custom Elements)
101
- - Devices
102
- - DOM
103
- - Events (CustomEvents)
104
- - Filesystem (ZenFS)
105
- - Internationalization (i18next)
106
- - Interval Manager (setInterval)
107
- - Log Manager (tslog)
108
- - Memory Manager (Abstractions)
109
- - Process Manager
110
- - Protocol Handlers (web+ecmaos://...)
111
- - Service Worker Manager
112
- - Shell
113
- - Storage (IndexedDB, localStorage, sessionStorage, etc.)
114
- - Terminal (xterm.js)
115
- - User Manager
116
- - WASM Loader
117
- - Window Manager (WinBox)
118
- - Workers (Web Workers)
104
+ - The kernel ties together the various components of the system into a cohesive whole
105
+ - Authentication (WebAuthn)
106
+ - Components (Web Components/Custom Elements)
107
+ - Devices
108
+ - DOM
109
+ - Events (CustomEvents)
110
+ - Filesystem (ZenFS)
111
+ - Internationalization (i18next)
112
+ - Interval Manager (setInterval)
113
+ - Log Manager (tslog)
114
+ - Memory Manager (Abstractions)
115
+ - Process Manager
116
+ - Protocol Handlers (web+ecmaos://...)
117
+ - Service Worker Manager
118
+ - Shell
119
+ - Storage (IndexedDB, localStorage, sessionStorage, etc.)
120
+ - Terminal (xterm.js)
121
+ - User Manager
122
+ - WASM Loader
123
+ - Window Manager (WinBox)
124
+ - Workers (Web Workers)
119
125
 
120
126
  - `Metal`
121
127
  - Metal is an API server for allowing connections to physical systems from ecmaOS using [Hono](https://hono.dev)
@@ -123,21 +129,27 @@ The goal is to create a kernel and supporting apps that tie together modern web
123
129
 
124
130
  - `Modules`
125
131
  - Modules are dynamically loaded into the kernel at boot and can be enabled or disabled
132
+ - They are specified during build via the `VITE_KERNEL_MODULES` environment variable
133
+ - e.g. `VITE_KERNEL_MODULES=@ecmaos-modules/sample@0.1.2,@your/package@1.2.3`
134
+ - Versions must be exact and are mandatory - you cannot use NPM version specifiers
126
135
  - They can provide additional functionality, devices, commands, etc.
127
136
  - They offer a [common interface](./core/types/modules.ts) for interacting with the kernel
128
137
  - Generally they should be written in [AssemblyScript](https://www.assemblyscript.org), but this isn't required
129
138
 
130
139
  - `Packages`
131
- - Packages are [npm packages](https://www.npmjs.com) that are installed into the ecmaOS environment
140
+ - Packages are [NPM packages](https://www.npmjs.com) that are installed into the ecmaOS environment
132
141
  - They can be installed from the terminal using the `install` command, e.g. `# install jquery`
133
142
  - NPM version specifiers are supported, e.g.:
134
143
  - `# install jquery@3.7.1`
135
144
  - `# install jquery@^3.7.1`
136
145
  - `# install jquery@latest`
137
- - [JSR](https://jsr.io) support is coming soon
146
+ - [JSR](https://jsr.io) may be used with the [NPM compatibility layer](https://jsr.io/docs/npm-compatibility):
147
+ - `# install @jsr/defaude__hello-jsr --registry https://npm.jsr.io`
138
148
 
139
149
  - `SWAPI`
140
150
  - The SWAPI is an API server running completely inside a service worker using [Hono](https://hono.dev)
151
+ - It allows for various operations including the `fs` route to fetch files via URL
152
+ - e.g., `# fetch /swapi/fs/home/user/hello.txt`
141
153
  - e.g., `# fetch /swapi/fake/person/fullName`
142
154
 
143
155
  - `Utils`
@@ -159,8 +171,10 @@ edit hello.txt
159
171
  env hello --set world ; env
160
172
  fetch https://ipecho.net/plain > /tmp/myip.txt
161
173
  fetch /xkcd-os.sixel # xterm.js includes sixel support
174
+ fetch /swapi/fs/home/user/hello.txt # fetch a file from the filesystem
162
175
  fetch /swapi/fake/person/fullName # fetch a random person from the SWAPI
163
176
  install jquery
177
+ install @ecmaos-apps/boilerplate
164
178
  ls /dev
165
179
  mkdir /tmp/zip ; cd /tmp/zip
166
180
  upload
@@ -1,18 +1,18 @@
1
1
  {
2
- "_browser-jvtvvRnm.js": {
3
- "file": "browser-jvtvvRnm.js",
2
+ "_browser-CoSyrw7Q.js": {
3
+ "file": "browser-CoSyrw7Q.js",
4
4
  "name": "browser",
5
5
  "isDynamicEntry": true,
6
6
  "imports": [
7
- "_empty-D1k8eaRb.js"
7
+ "_empty-DAF3BgdH.js"
8
8
  ]
9
9
  },
10
- "_empty-D1k8eaRb.js": {
11
- "file": "empty-D1k8eaRb.js",
10
+ "_empty-DAF3BgdH.js": {
11
+ "file": "empty-DAF3BgdH.js",
12
12
  "name": "empty",
13
13
  "dynamicImports": [
14
- "_topbar.min-qHiqBD75.js",
15
- "_browser-jvtvvRnm.js",
14
+ "_topbar.min-CYYqkupv.js",
15
+ "_browser-CoSyrw7Q.js",
16
16
  "src/tree/lib/commands/install.ts",
17
17
  "node_modules/.pnpm/figlet@1.8.0/node_modules/figlet/importable-fonts/Poison.js"
18
18
  ]
@@ -21,12 +21,12 @@
21
21
  "file": "kernel.css",
22
22
  "src": "_kernel.css"
23
23
  },
24
- "_topbar.min-qHiqBD75.js": {
25
- "file": "topbar.min-qHiqBD75.js",
24
+ "_topbar.min-CYYqkupv.js": {
25
+ "file": "topbar.min-CYYqkupv.js",
26
26
  "name": "topbar.min",
27
27
  "isDynamicEntry": true,
28
28
  "imports": [
29
- "_empty-D1k8eaRb.js"
29
+ "_empty-DAF3BgdH.js"
30
30
  ]
31
31
  },
32
32
  "node_modules/.pnpm/figlet@1.8.0/node_modules/figlet/importable-fonts/Poison.js": {
@@ -41,16 +41,16 @@
41
41
  "src": "src/tree/kernel.ts",
42
42
  "isEntry": true,
43
43
  "imports": [
44
- "_empty-D1k8eaRb.js"
44
+ "_empty-DAF3BgdH.js"
45
45
  ]
46
46
  },
47
47
  "src/tree/lib/commands/install.ts": {
48
- "file": "install-DvXm00-p.js",
48
+ "file": "install--B0gJ8Dk.js",
49
49
  "name": "install",
50
50
  "src": "src/tree/lib/commands/install.ts",
51
51
  "isDynamicEntry": true,
52
52
  "imports": [
53
- "_empty-D1k8eaRb.js"
53
+ "_empty-DAF3BgdH.js"
54
54
  ]
55
55
  },
56
56
  "src/ui.ts": {
@@ -59,7 +59,7 @@
59
59
  "src": "src/ui.ts",
60
60
  "isEntry": true,
61
61
  "imports": [
62
- "_empty-D1k8eaRb.js"
62
+ "_empty-DAF3BgdH.js"
63
63
  ]
64
64
  }
65
65
  }
@@ -1,4 +1,4 @@
1
- import { g as getDefaultExportFromCjs } from "./empty-D1k8eaRb.js";
1
+ import { g as getDefaultExportFromCjs } from "./empty-DAF3BgdH.js";
2
2
  var browser$2;
3
3
  var hasRequiredBrowser;
4
4
  function requireBrowser() {
@@ -20,4 +20,4 @@ const browser$1 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePro
20
20
  export {
21
21
  browser$1 as b
22
22
  };
23
- //# sourceMappingURL=browser-jvtvvRnm.js.map
23
+ //# sourceMappingURL=browser-CoSyrw7Q.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"browser-jvtvvRnm.js","sources":["../node_modules/.pnpm/ws@8.18.0/node_modules/ws/browser.js"],"sourcesContent":["'use strict';\n\nmodule.exports = function () {\n throw new Error(\n 'ws does not work in the browser. Browser clients must use the native ' +\n 'WebSocket object'\n );\n};\n"],"names":["browser"],"mappings":";;;;;;AAEAA,cAAiB,WAAY;AAC3B,UAAM,IAAI;AAAA,MACR;AAAA,IAED;AAAA,EACF;;;;;;;;;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"browser-CoSyrw7Q.js","sources":["../node_modules/.pnpm/ws@8.18.0/node_modules/ws/browser.js"],"sourcesContent":["'use strict';\n\nmodule.exports = function () {\n throw new Error(\n 'ws does not work in the browser. Browser clients must use the native ' +\n 'WebSocket object'\n );\n};\n"],"names":["browser"],"mappings":";;;;;;AAEAA,cAAiB,WAAY;AAC3B,UAAM,IAAI;AAAA,MACR;AAAA,IAED;AAAA,EACF;;;;;;;;;","x_google_ignoreList":[0]}