@jxsuite/starters 1.6.3 → 1.6.5

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
@@ -1,7 +1,7 @@
1
1
  # @jxsuite/starters
2
2
 
3
3
  The catalogue of ready-made **starter sites** a user can clone when creating a
4
- new Jx project — from Studio's New Project picker or
4
+ new Jx project, either from Studio's New Project picker or with
5
5
  `bun create @jxsuite <directory> --template <id>`. The package is two things:
6
6
  `registry.json`, the picker metadata, and `sites/`, one complete buildable Jx
7
7
  project tree per starter.
@@ -25,12 +25,12 @@ from the monorepo and from the copy staged inside the packaged desktop app.
25
25
  `getStarterDir` throws `Unknown starter: "<id>"` rather than handing back a path
26
26
  that does not exist. The registry is also exported raw as
27
27
  `@jxsuite/starters/registry.json`, for consumers that want the array without the
28
- module. The package publishes raw TypeScript — `exports["."]` is `./index.ts`,
28
+ module. The package publishes raw TypeScript: `exports["."]` is `./index.ts`,
29
29
  there is no build step, and the module imports only `node:fs` and `node:path`.
30
30
 
31
31
  ## The registry contract
32
32
 
33
- `registry.json` is a flat JSON array. Every entry carries all eight fields —
33
+ `registry.json` is a flat JSON array. Every entry carries all eight fields;
34
34
  there are no optional keys and no defaults (`index.ts`, `StarterMeta`):
35
35
 
36
36
  | Field | Contract |
@@ -42,7 +42,7 @@ there are no optional keys and no defaults (`index.ts`, `StarterMeta`):
42
42
  | `description` | Longer copy for the showcase |
43
43
  | `features` | Non-empty `string[]` of Jx features the starter demonstrates |
44
44
  | `accent` | Hex colour, `/^#[0-9a-fA-F]{3,8}$/` |
45
- | `thumbnail` | `data:image/…` URI — **generated**, see below |
45
+ | `thumbnail` | `data:image/…` URI (**generated**, see below) |
46
46
 
47
47
  `tests/registry.test.ts` asserts each of those, that ids are unique, and that
48
48
  every id maps to a `sites/<id>/project.json`. Never restate the number of
@@ -59,9 +59,9 @@ verifier, and the screenshot lane's shot selector.
59
59
 
60
60
  ## Layout of `sites/`
61
61
 
62
- Each `sites/<id>/` is a complete, buildable Jx project — `components/`,
63
- `layouts/`, `pages/`, `content/`, `public/`, `project.json`, a `package.json`,
64
- and two **committed generated** entry schemas:
62
+ Each `sites/<id>/` is a complete, buildable Jx project. It contains
63
+ `components/`, `layouts/`, `pages/`, `content/`, `public/`, `project.json`, a
64
+ `package.json`, and two **committed generated** entry schemas:
65
65
 
66
66
  ```
67
67
  sites/restaurant/
@@ -82,7 +82,7 @@ must satisfy both `parseProjectConfig` and its own `project.schema.json`, every
82
82
  `content/**/*.md` must start with frontmatter. `tests/validate-projects.test.ts`
83
83
  runs each starter through `@jxsuite/schema`'s `validateProjectFile` as well.
84
84
 
85
- Starters are not uniform by design — the museum starter is the multilingual one
85
+ Starters are not uniform by design: the museum starter is the multilingual one
86
86
  (`i18n.locales: ["en", "fr-CA", "ar"]` with `routing: "prefix-except-default"`),
87
87
  and real-estate's `listings` collection uses `format: "Csv"` where the others
88
88
  use Markdown.
@@ -90,8 +90,8 @@ use Markdown.
90
90
  ## Consumption: cloned, never depended on
91
91
 
92
92
  Nothing a user ships depends on this package. `@jxsuite/create` imports
93
- `getStarterDir` lazily — so blank projects never load the large starters
94
- package — copies the tree, and then re-stamps identity:
93
+ `getStarterDir` lazily (so blank projects never load the large starters
94
+ package), copies the tree, and then re-stamps identity:
95
95
 
96
96
  ```sh
97
97
  bun create @jxsuite my-site --template restaurant
@@ -115,16 +115,16 @@ both its Electrobun and Chromium window layers.
115
115
  ## Authoring or modifying a starter
116
116
 
117
117
  1. Add the `sites/<id>/` tree and a `registry.json` entry with all eight fields.
118
- 2. `bun run schema:generate-all` — regenerates every `project.schema.json` and
118
+ 2. `bun run schema:generate-all` regenerates every `project.schema.json` and
119
119
  `document.schema.json`. **Always via this script**, never by hand: it runs
120
120
  `schema:clean-roots` first (see below). `bun run schema:verify` proves the
121
- result in CI, so a stale entry schema is a red build — and
122
- `.github/workflows/schemas.yml` regenerates it and pushes the fix to your
123
- branch, with a comment naming the JSON Pointers that moved.
124
- 3. `bun run docs:generate` — `docs/studio/projects/starters.md` is rendered from
125
- `registry.json` by `scripts/docs/generators/starters.ts`. Hand-editing it is
126
- a bug; CI diffs the page.
127
- 4. `bun run screenshots:thumbnails` — the `thumbnail` data URI is not
121
+ result in CI, so a stale entry schema is a red build.
122
+ `.github/workflows/schemas.yml` also regenerates it and pushes the fix to
123
+ your branch, with a comment naming the JSON Pointers that moved.
124
+ 3. `bun run docs:generate`, because `docs/studio/projects/starters.md` is
125
+ rendered from `registry.json` by `scripts/docs/generators/starters.ts`.
126
+ Hand-editing it is a bug; CI diffs the page.
127
+ 4. `bun run screenshots:thumbnails`. The `thumbnail` data URI is not
128
128
  hand-authored. The script builds the starter with image optimization off,
129
129
  serves `dist/`, screenshots the hero viewport in headless Chromium, and
130
130
  writes the small JPEG into `registry.json` plus a full-res JPEG into
@@ -141,8 +141,8 @@ both its Electrobun and Chromium window layers.
141
141
  fetch the _same_ images; `--force` re-picks even pinned ones. The script
142
142
  upserts a per-site block in `CREDITS.md` between `<!-- site:<id>:start -->`
143
143
  and `<!-- site:<id>:end -->`.
144
- Committed output is plain image files — scaffolded projects have no Pexels or
145
- network dependency.
144
+ Committed output is plain image files, so scaffolded projects have no Pexels
145
+ or network dependency.
146
146
 
147
147
  6. `bun test --isolate` from `packages/starters`. Per-file coverage is gated at
148
148
  99% lines / 99% functions (`bunfig.toml`); `sites/`, `scripts/` and `tests/`
@@ -155,7 +155,7 @@ staged registry, so every new id is covered automatically.
155
155
  ## Hazards
156
156
 
157
157
  **The shadowed core.** A starter's `package.json` pins _published_ `@jxsuite/*`
158
- ranges — it must, because it is a template a user scaffolds from, and starters
158
+ ranges. It must, because it is a template a user scaffolds from, and starters
159
159
  are not bun workspace members, so `workspace:^` is unavailable. Iterating a
160
160
  starter in Studio runs `bun install` in that root, which materialises a real
161
161
  `@jxsuite/schema` beside a workspace far ahead of it. That has already produced
@@ -163,7 +163,7 @@ a starter document schema narrower than the starter's own content, unnoticed for
163
163
  six weeks (`scripts/check-shadowed-core.ts` carries the full post-mortem).
164
164
  `bun run schema:generate-all` therefore runs `schema:clean-roots`
165
165
  (`bun scripts/check-shadowed-core.ts --fix`) first, removing only
166
- `node_modules/@jxsuite/*` and a stray lockfile — third-party dependencies stay,
166
+ `node_modules/@jxsuite/*` and a stray lockfile. Third-party dependencies stay,
167
167
  because the install is what makes the starter preview, and a workspace
168
168
  _symlink_ is never removed.
169
169
 
@@ -178,9 +178,9 @@ release-please rewrites them inside its release commit via `extra-files`; the
178
178
  gate is `bun run templates:check` (`templates:sync` to repair).
179
179
 
180
180
  **Packaged-desktop path contract.** ElectroBun inlines the bun-side JS graph, so
181
- `import.meta.dirname` resolves to `app/bun/` at runtime — `registry.json` and
182
- `sites/` must be staged to `bun/registry.json` and `bun/sites` by `build.copy`
183
- in `packages/desktop/electrobun.config.ts` (specs/desktop.md §7.4).
181
+ `import.meta.dirname` resolves to `app/bun/` at runtime. `registry.json` and
182
+ `sites/` must therefore be staged to `bun/registry.json` and `bun/sites` by
183
+ `build.copy` in `packages/desktop/electrobun.config.ts` (specs/desktop.md §7.4).
184
184
 
185
185
  **The screenshot lane ignores this package's source.** It watches only
186
186
  `registry.json` and the six starter roots a shot actually opens
@@ -189,8 +189,8 @@ in `packages/desktop/electrobun.config.ts` (specs/desktop.md §7.4).
189
189
 
190
190
  ## Versioning
191
191
 
192
- Published to npm as `@jxsuite/starters` — TypeScript source, like every
193
- `@jxsuite` package, following the monorepo's release train (the `starters`
192
+ Published to npm as `@jxsuite/starters`. Like every `@jxsuite` package, it ships
193
+ TypeScript source and follows the monorepo's release train (the `starters`
194
194
  release-please component). Within the monorepo, `@jxsuite/create` depends on it
195
195
  via `workspace:^`. Because consumption is a one-time clone, publishing a new
196
196
  version never changes an existing project.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jxsuite/starters",
3
- "version": "1.6.3",
3
+ "version": "1.6.5",
4
4
  "description": "Starter site templates for new Jx projects",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -26,9 +26,9 @@
26
26
  "test:coverage": "bun test --isolate --coverage"
27
27
  },
28
28
  "devDependencies": {
29
- "@jxsuite/parser": "^1.5.5",
30
- "@jxsuite/runtime": "^2.0.5",
31
- "@jxsuite/schema": "^1.8.1",
29
+ "@jxsuite/parser": "^1.6.0",
30
+ "@jxsuite/runtime": "^3.0.0",
31
+ "@jxsuite/schema": "^2.0.0",
32
32
  "ajv": "^8.20.0",
33
33
  "ajv-formats": "^3.0.1"
34
34
  }
@@ -271,6 +271,10 @@
271
271
  "description": "Named export in $src module. Defaults to the state key name.",
272
272
  "type": "string"
273
273
  },
274
+ "$lazy": {
275
+ "description": "Load $src on first call instead of importing it up front. The function then returns a promise, so it may only be called from a handler or lifecycle hook — never bound as a computed value. Use it for code most visitors never reach.",
276
+ "type": "boolean"
277
+ },
274
278
  "$prototype": {
275
279
  "const": "Function",
276
280
  "type": "string"
@@ -2625,6 +2629,20 @@
2625
2629
  }
2626
2630
  ]
2627
2631
  },
2632
+ "onconfigurationchange": {
2633
+ "description": "Event handler for the \"configurationchange\" event.",
2634
+ "oneOf": [
2635
+ {
2636
+ "$ref": "#/$defs/v1/$defs/RefObject"
2637
+ },
2638
+ {
2639
+ "$ref": "#/$defs/v1/$defs/ExpressionEntry"
2640
+ },
2641
+ {
2642
+ "$ref": "#/$defs/v1/$defs/FunctionDef"
2643
+ }
2644
+ ]
2645
+ },
2628
2646
  "onconnect": {
2629
2647
  "description": "Event handler for the \"connect\" event.",
2630
2648
  "oneOf": [
@@ -5481,6 +5499,20 @@
5481
5499
  }
5482
5500
  ]
5483
5501
  },
5502
+ "onstream": {
5503
+ "description": "Event handler for the \"stream\" event.",
5504
+ "oneOf": [
5505
+ {
5506
+ "$ref": "#/$defs/v1/$defs/RefObject"
5507
+ },
5508
+ {
5509
+ "$ref": "#/$defs/v1/$defs/ExpressionEntry"
5510
+ },
5511
+ {
5512
+ "$ref": "#/$defs/v1/$defs/FunctionDef"
5513
+ }
5514
+ ]
5515
+ },
5484
5516
  "onsubmit": {
5485
5517
  "description": "Event handler for the \"submit\" event.",
5486
5518
  "oneOf": [
@@ -22836,6 +22868,7 @@
22836
22868
  "body",
22837
22869
  "br",
22838
22870
  "button",
22871
+ "camera",
22839
22872
  "canvas",
22840
22873
  "caption",
22841
22874
  "circle",
@@ -22932,6 +22965,7 @@
22932
22965
  "meter",
22933
22966
  "mfrac",
22934
22967
  "mi",
22968
+ "microphone",
22935
22969
  "mmultiscripts",
22936
22970
  "mn",
22937
22971
  "mo",
@@ -23020,6 +23054,7 @@
23020
23054
  "u",
23021
23055
  "ul",
23022
23056
  "use",
23057
+ "usermedia",
23023
23058
  "var",
23024
23059
  "video",
23025
23060
  "view",
@@ -9,10 +9,10 @@
9
9
  "dev": "jx dev"
10
10
  },
11
11
  "dependencies": {
12
- "@jxsuite/parser": "^1.5.5"
12
+ "@jxsuite/parser": "^1.6.0"
13
13
  },
14
14
  "devDependencies": {
15
- "@jxsuite/compiler": "^2.0.7",
16
- "@jxsuite/runtime": "^2.0.5"
15
+ "@jxsuite/compiler": "^3.0.0",
16
+ "@jxsuite/runtime": "^3.0.0"
17
17
  }
18
18
  }
@@ -271,6 +271,10 @@
271
271
  "description": "Named export in $src module. Defaults to the state key name.",
272
272
  "type": "string"
273
273
  },
274
+ "$lazy": {
275
+ "description": "Load $src on first call instead of importing it up front. The function then returns a promise, so it may only be called from a handler or lifecycle hook — never bound as a computed value. Use it for code most visitors never reach.",
276
+ "type": "boolean"
277
+ },
274
278
  "$prototype": {
275
279
  "const": "Function",
276
280
  "type": "string"
@@ -2625,6 +2629,20 @@
2625
2629
  }
2626
2630
  ]
2627
2631
  },
2632
+ "onconfigurationchange": {
2633
+ "description": "Event handler for the \"configurationchange\" event.",
2634
+ "oneOf": [
2635
+ {
2636
+ "$ref": "#/$defs/v1/$defs/RefObject"
2637
+ },
2638
+ {
2639
+ "$ref": "#/$defs/v1/$defs/ExpressionEntry"
2640
+ },
2641
+ {
2642
+ "$ref": "#/$defs/v1/$defs/FunctionDef"
2643
+ }
2644
+ ]
2645
+ },
2628
2646
  "onconnect": {
2629
2647
  "description": "Event handler for the \"connect\" event.",
2630
2648
  "oneOf": [
@@ -5481,6 +5499,20 @@
5481
5499
  }
5482
5500
  ]
5483
5501
  },
5502
+ "onstream": {
5503
+ "description": "Event handler for the \"stream\" event.",
5504
+ "oneOf": [
5505
+ {
5506
+ "$ref": "#/$defs/v1/$defs/RefObject"
5507
+ },
5508
+ {
5509
+ "$ref": "#/$defs/v1/$defs/ExpressionEntry"
5510
+ },
5511
+ {
5512
+ "$ref": "#/$defs/v1/$defs/FunctionDef"
5513
+ }
5514
+ ]
5515
+ },
5484
5516
  "onsubmit": {
5485
5517
  "description": "Event handler for the \"submit\" event.",
5486
5518
  "oneOf": [
@@ -22836,6 +22868,7 @@
22836
22868
  "body",
22837
22869
  "br",
22838
22870
  "button",
22871
+ "camera",
22839
22872
  "canvas",
22840
22873
  "caption",
22841
22874
  "circle",
@@ -22932,6 +22965,7 @@
22932
22965
  "meter",
22933
22966
  "mfrac",
22934
22967
  "mi",
22968
+ "microphone",
22935
22969
  "mmultiscripts",
22936
22970
  "mn",
22937
22971
  "mo",
@@ -23020,6 +23054,7 @@
23020
23054
  "u",
23021
23055
  "ul",
23022
23056
  "use",
23057
+ "usermedia",
23023
23058
  "var",
23024
23059
  "video",
23025
23060
  "view",
@@ -9,10 +9,10 @@
9
9
  "dev": "jx dev"
10
10
  },
11
11
  "dependencies": {
12
- "@jxsuite/parser": "^1.5.5"
12
+ "@jxsuite/parser": "^1.6.0"
13
13
  },
14
14
  "devDependencies": {
15
- "@jxsuite/compiler": "^2.0.7",
16
- "@jxsuite/runtime": "^2.0.5"
15
+ "@jxsuite/compiler": "^3.0.0",
16
+ "@jxsuite/runtime": "^3.0.0"
17
17
  }
18
18
  }
@@ -271,6 +271,10 @@
271
271
  "description": "Named export in $src module. Defaults to the state key name.",
272
272
  "type": "string"
273
273
  },
274
+ "$lazy": {
275
+ "description": "Load $src on first call instead of importing it up front. The function then returns a promise, so it may only be called from a handler or lifecycle hook — never bound as a computed value. Use it for code most visitors never reach.",
276
+ "type": "boolean"
277
+ },
274
278
  "$prototype": {
275
279
  "const": "Function",
276
280
  "type": "string"
@@ -2625,6 +2629,20 @@
2625
2629
  }
2626
2630
  ]
2627
2631
  },
2632
+ "onconfigurationchange": {
2633
+ "description": "Event handler for the \"configurationchange\" event.",
2634
+ "oneOf": [
2635
+ {
2636
+ "$ref": "#/$defs/v1/$defs/RefObject"
2637
+ },
2638
+ {
2639
+ "$ref": "#/$defs/v1/$defs/ExpressionEntry"
2640
+ },
2641
+ {
2642
+ "$ref": "#/$defs/v1/$defs/FunctionDef"
2643
+ }
2644
+ ]
2645
+ },
2628
2646
  "onconnect": {
2629
2647
  "description": "Event handler for the \"connect\" event.",
2630
2648
  "oneOf": [
@@ -5481,6 +5499,20 @@
5481
5499
  }
5482
5500
  ]
5483
5501
  },
5502
+ "onstream": {
5503
+ "description": "Event handler for the \"stream\" event.",
5504
+ "oneOf": [
5505
+ {
5506
+ "$ref": "#/$defs/v1/$defs/RefObject"
5507
+ },
5508
+ {
5509
+ "$ref": "#/$defs/v1/$defs/ExpressionEntry"
5510
+ },
5511
+ {
5512
+ "$ref": "#/$defs/v1/$defs/FunctionDef"
5513
+ }
5514
+ ]
5515
+ },
5484
5516
  "onsubmit": {
5485
5517
  "description": "Event handler for the \"submit\" event.",
5486
5518
  "oneOf": [
@@ -22836,6 +22868,7 @@
22836
22868
  "body",
22837
22869
  "br",
22838
22870
  "button",
22871
+ "camera",
22839
22872
  "canvas",
22840
22873
  "caption",
22841
22874
  "circle",
@@ -22932,6 +22965,7 @@
22932
22965
  "meter",
22933
22966
  "mfrac",
22934
22967
  "mi",
22968
+ "microphone",
22935
22969
  "mmultiscripts",
22936
22970
  "mn",
22937
22971
  "mo",
@@ -23020,6 +23054,7 @@
23020
23054
  "u",
23021
23055
  "ul",
23022
23056
  "use",
23057
+ "usermedia",
23023
23058
  "var",
23024
23059
  "video",
23025
23060
  "view",
@@ -9,10 +9,10 @@
9
9
  "dev": "jx dev"
10
10
  },
11
11
  "dependencies": {
12
- "@jxsuite/parser": "^1.5.5"
12
+ "@jxsuite/parser": "^1.6.0"
13
13
  },
14
14
  "devDependencies": {
15
- "@jxsuite/compiler": "^2.0.7",
16
- "@jxsuite/runtime": "^2.0.5"
15
+ "@jxsuite/compiler": "^3.0.0",
16
+ "@jxsuite/runtime": "^3.0.0"
17
17
  }
18
18
  }
@@ -271,6 +271,10 @@
271
271
  "description": "Named export in $src module. Defaults to the state key name.",
272
272
  "type": "string"
273
273
  },
274
+ "$lazy": {
275
+ "description": "Load $src on first call instead of importing it up front. The function then returns a promise, so it may only be called from a handler or lifecycle hook — never bound as a computed value. Use it for code most visitors never reach.",
276
+ "type": "boolean"
277
+ },
274
278
  "$prototype": {
275
279
  "const": "Function",
276
280
  "type": "string"
@@ -2625,6 +2629,20 @@
2625
2629
  }
2626
2630
  ]
2627
2631
  },
2632
+ "onconfigurationchange": {
2633
+ "description": "Event handler for the \"configurationchange\" event.",
2634
+ "oneOf": [
2635
+ {
2636
+ "$ref": "#/$defs/v1/$defs/RefObject"
2637
+ },
2638
+ {
2639
+ "$ref": "#/$defs/v1/$defs/ExpressionEntry"
2640
+ },
2641
+ {
2642
+ "$ref": "#/$defs/v1/$defs/FunctionDef"
2643
+ }
2644
+ ]
2645
+ },
2628
2646
  "onconnect": {
2629
2647
  "description": "Event handler for the \"connect\" event.",
2630
2648
  "oneOf": [
@@ -5481,6 +5499,20 @@
5481
5499
  }
5482
5500
  ]
5483
5501
  },
5502
+ "onstream": {
5503
+ "description": "Event handler for the \"stream\" event.",
5504
+ "oneOf": [
5505
+ {
5506
+ "$ref": "#/$defs/v1/$defs/RefObject"
5507
+ },
5508
+ {
5509
+ "$ref": "#/$defs/v1/$defs/ExpressionEntry"
5510
+ },
5511
+ {
5512
+ "$ref": "#/$defs/v1/$defs/FunctionDef"
5513
+ }
5514
+ ]
5515
+ },
5484
5516
  "onsubmit": {
5485
5517
  "description": "Event handler for the \"submit\" event.",
5486
5518
  "oneOf": [
@@ -22836,6 +22868,7 @@
22836
22868
  "body",
22837
22869
  "br",
22838
22870
  "button",
22871
+ "camera",
22839
22872
  "canvas",
22840
22873
  "caption",
22841
22874
  "circle",
@@ -22932,6 +22965,7 @@
22932
22965
  "meter",
22933
22966
  "mfrac",
22934
22967
  "mi",
22968
+ "microphone",
22935
22969
  "mmultiscripts",
22936
22970
  "mn",
22937
22971
  "mo",
@@ -23020,6 +23054,7 @@
23020
23054
  "u",
23021
23055
  "ul",
23022
23056
  "use",
23057
+ "usermedia",
23023
23058
  "var",
23024
23059
  "video",
23025
23060
  "view",
@@ -9,10 +9,10 @@
9
9
  "dev": "jx dev"
10
10
  },
11
11
  "dependencies": {
12
- "@jxsuite/parser": "^1.5.5"
12
+ "@jxsuite/parser": "^1.6.0"
13
13
  },
14
14
  "devDependencies": {
15
- "@jxsuite/compiler": "^2.0.7",
16
- "@jxsuite/runtime": "^2.0.5"
15
+ "@jxsuite/compiler": "^3.0.0",
16
+ "@jxsuite/runtime": "^3.0.0"
17
17
  }
18
18
  }
@@ -271,6 +271,10 @@
271
271
  "description": "Named export in $src module. Defaults to the state key name.",
272
272
  "type": "string"
273
273
  },
274
+ "$lazy": {
275
+ "description": "Load $src on first call instead of importing it up front. The function then returns a promise, so it may only be called from a handler or lifecycle hook — never bound as a computed value. Use it for code most visitors never reach.",
276
+ "type": "boolean"
277
+ },
274
278
  "$prototype": {
275
279
  "const": "Function",
276
280
  "type": "string"
@@ -2625,6 +2629,20 @@
2625
2629
  }
2626
2630
  ]
2627
2631
  },
2632
+ "onconfigurationchange": {
2633
+ "description": "Event handler for the \"configurationchange\" event.",
2634
+ "oneOf": [
2635
+ {
2636
+ "$ref": "#/$defs/v1/$defs/RefObject"
2637
+ },
2638
+ {
2639
+ "$ref": "#/$defs/v1/$defs/ExpressionEntry"
2640
+ },
2641
+ {
2642
+ "$ref": "#/$defs/v1/$defs/FunctionDef"
2643
+ }
2644
+ ]
2645
+ },
2628
2646
  "onconnect": {
2629
2647
  "description": "Event handler for the \"connect\" event.",
2630
2648
  "oneOf": [
@@ -5481,6 +5499,20 @@
5481
5499
  }
5482
5500
  ]
5483
5501
  },
5502
+ "onstream": {
5503
+ "description": "Event handler for the \"stream\" event.",
5504
+ "oneOf": [
5505
+ {
5506
+ "$ref": "#/$defs/v1/$defs/RefObject"
5507
+ },
5508
+ {
5509
+ "$ref": "#/$defs/v1/$defs/ExpressionEntry"
5510
+ },
5511
+ {
5512
+ "$ref": "#/$defs/v1/$defs/FunctionDef"
5513
+ }
5514
+ ]
5515
+ },
5484
5516
  "onsubmit": {
5485
5517
  "description": "Event handler for the \"submit\" event.",
5486
5518
  "oneOf": [
@@ -22836,6 +22868,7 @@
22836
22868
  "body",
22837
22869
  "br",
22838
22870
  "button",
22871
+ "camera",
22839
22872
  "canvas",
22840
22873
  "caption",
22841
22874
  "circle",
@@ -22932,6 +22965,7 @@
22932
22965
  "meter",
22933
22966
  "mfrac",
22934
22967
  "mi",
22968
+ "microphone",
22935
22969
  "mmultiscripts",
22936
22970
  "mn",
22937
22971
  "mo",
@@ -23020,6 +23054,7 @@
23020
23054
  "u",
23021
23055
  "ul",
23022
23056
  "use",
23057
+ "usermedia",
23023
23058
  "var",
23024
23059
  "video",
23025
23060
  "view",
@@ -9,10 +9,10 @@
9
9
  "dev": "jx dev"
10
10
  },
11
11
  "dependencies": {
12
- "@jxsuite/parser": "^1.5.5"
12
+ "@jxsuite/parser": "^1.6.0"
13
13
  },
14
14
  "devDependencies": {
15
- "@jxsuite/compiler": "^2.0.7",
16
- "@jxsuite/runtime": "^2.0.5"
15
+ "@jxsuite/compiler": "^3.0.0",
16
+ "@jxsuite/runtime": "^3.0.0"
17
17
  }
18
18
  }