@wix/himalaya-cli 0.1579.0 → 0.1580.0
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/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/core/sdk/motion/src/index.d.ts +51 -5
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/wix-sdk/media/src/index.d.ts +1 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/_types/stdlib/wix-sdk/media/src/rendition.d.ts +42 -0
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/motion.mjs +22 -2
- package/dist/authoring-runtime/node_modules/@wix/himalaya/dist/wix-media.mjs +78 -0
- package/dist/cli.mjs +9019 -7448
- package/dist/preview-assets.generated.bin +0 -0
- package/dist/quickjs-intl.js +462 -0
- package/dist/quickjs-web-globals.js +540 -0
- package/dist/quickjs-worker-entry.js +313 -0
- package/guides/himi-json-output.md +30 -1
- package/guides/one-app-section-mappings.md +4 -5
- package/guides/one-app-to-himi-app.md +214 -6
- package/guides/one-app-viewer.md +2 -2
- package/guides/sdk-reference.json +36 -6
- package/package.json +3 -2
package/guides/one-app-viewer.md
CHANGED
|
@@ -26,7 +26,7 @@ Two runtime refinements below take precedence over simplified examples in the St
|
|
|
26
26
|
- Retain source IDs as relationship keys. Give generated files, components, and routes meaningful target names; keep a source-to-target lookup.
|
|
27
27
|
- Do not turn lifecycle or collection metadata into app requirements.
|
|
28
28
|
- The current scope does not introduce unconfigured drawer navigation or independent per-screen header surfaces. Use shared Himi header presentation where appropriate; preserve supplied header/drawer inputs that affect top-bar intent. Record configured behavior that exceeds this target scope as an adaptation or unresolved gap.
|
|
29
|
-
- Retain only `phoneNumber`, `website`, and `services` from the business object, including their permitted nested fields. Do not recover design or titles from excluded business fields.
|
|
29
|
+
- Retain only `phoneNumber`, `website`, and `services` from the business object, including their permitted nested fields, plus the same-site Business `displayName` as business identity only (the current workflow defines its use). Do not recover design or screen titles from other excluded business fields.
|
|
30
30
|
- An unmapped historical catalog row starts a current capability investigation. Implement app-local composition, workers and adapters when feasible. Do not silently drop it, invent different behavior, or substitute a WebView. Escalate only genuine platform-core or access unknowns that prevent the requested reconstruction.
|
|
31
31
|
|
|
32
32
|
## Step 1 — Establish the source interpretation
|
|
@@ -136,7 +136,7 @@ The source rules below describe the original viewer. **For the current One App m
|
|
|
136
136
|
Relevant source behavior to preserve when applicable:
|
|
137
137
|
|
|
138
138
|
- Header definition selects the renderer; a missing definition ID falls back to the detailed header in the inspected domain code.
|
|
139
|
-
- Title and subtitle come from the header domain. Do not silently substitute excluded business-title fields when a dynamic title cannot be resolved from permitted inputs.
|
|
139
|
+
- Title and subtitle come from the header domain. Do not silently substitute excluded business-title fields when a dynamic title cannot be resolved from permitted inputs; the Business `displayName` names the business, not a header or screen title.
|
|
140
140
|
- Detailed-header empty `coverImagesUrls` falls back to global Structure covers for compatibility. Preserve image order and transition timing where configured.
|
|
141
141
|
- `isCollapsible` coordinates the header with the page's scroll container. A static hero image alone does not reproduce collapse behavior.
|
|
142
142
|
- Logo, invite button, CTA, member count/avatars, and business-profile entry point have separate controls. A CTA needs both its configuration and its show flag.
|
|
@@ -3714,8 +3714,8 @@
|
|
|
3714
3714
|
{
|
|
3715
3715
|
"name": "MotionSensor",
|
|
3716
3716
|
"kind": "type",
|
|
3717
|
-
"jsdoc": "/** Which sensor a watch streams. */",
|
|
3718
|
-
"decl": "export type MotionSensor
|
|
3717
|
+
"jsdoc": "/** Which sensor (or gesture event) a watch streams. */",
|
|
3718
|
+
"decl": "export type MotionSensor =\n | \"steps\" | \"altitude\" | \"heading\"\n | \"accelerometer\" | \"gyroscope\" | \"magnetometer\"\n | \"shake\" | \"tilt\" | \"significantMotion\";"
|
|
3719
3719
|
},
|
|
3720
3720
|
{
|
|
3721
3721
|
"name": "StepHistoryStatus",
|
|
@@ -3727,7 +3727,7 @@
|
|
|
3727
3727
|
"name": "MotionAvailability",
|
|
3728
3728
|
"kind": "interface",
|
|
3729
3729
|
"jsdoc": "/** What this device can actually do. Never assume — a barometer is common but not universal. */",
|
|
3730
|
-
"decl": "export interface MotionAvailability {\n /** Pedometer / step counter present (and, on Android, the runtime permission held). */\n steps: boolean;\n /** Barometer present. False on simulators and low-end hardware. */\n altimeter: boolean;\n /** Magnetometer / compass present. */\n heading: boolean;\n /** Whether `getStepCount` can answer a past window — see {@link StepHistoryStatus}. An\n * unknown or absent value reads as \"unsupported\", never as \"available\". */\n stepHistory: StepHistoryStatus;\n}"
|
|
3730
|
+
"decl": "export interface MotionAvailability {\n /** Pedometer / step counter present (and, on Android, the runtime permission held). */\n steps: boolean;\n /** Barometer present. False on simulators and low-end hardware. */\n altimeter: boolean;\n /** Magnetometer / compass present. */\n heading: boolean;\n /** Whether `getStepCount` can answer a past window — see {@link StepHistoryStatus}. An\n * unknown or absent value reads as \"unsupported\", never as \"available\". */\n stepHistory: StepHistoryStatus;\n /** Accelerometer present (web: DeviceMotion exists — false on desktop browsers). */\n accelerometer: boolean;\n /** Gyroscope present (web: DeviceMotion rotationRate). */\n gyroscope: boolean;\n /** Raw magnetometer present. Always false on web — no browser exposes one by default. */\n magnetometer: boolean;\n /** Shake events can be detected (needs an accelerometer). */\n shake: boolean;\n /** Tilt events can be detected (needs an accelerometer). */\n tilt: boolean;\n /** Significant-motion events can be detected (a hardware trigger or an accelerometer). */\n significantMotion: boolean;\n}"
|
|
3731
3731
|
},
|
|
3732
3732
|
{
|
|
3733
3733
|
"name": "StepSample",
|
|
@@ -3751,7 +3751,7 @@
|
|
|
3751
3751
|
"name": "MotionSample",
|
|
3752
3752
|
"kind": "type",
|
|
3753
3753
|
"jsdoc": "",
|
|
3754
|
-
"decl": "export type MotionSample
|
|
3754
|
+
"decl": "export type MotionSample =\n | StepSample | AltitudeSample | HeadingSample\n /** accelerometer / gyroscope / magnetometer: one raw reading. Units: accelerometer g (gravity\n * included; flat face-up ⇒ z ≈ +1 on every platform), gyroscope rad/s, magnetometer µT. */\n | { x: number; y: number; z: number; timestampMs: number }\n /** shake: ONE event per shake. `magnitude` is the shake's peak total acceleration, g. */\n | { magnitude: number; timestampMs: number }\n /** tilt: attitude relative to gravity, degrees. Flat face-up is { pitch: 0, roll: 0 }; pitch is\n * positive when the top edge rises, roll positive when the right edge dips. */\n | { pitch: number; roll: number; timestampMs: number }\n /** significantMotion: the device started moving after a period at rest. */\n | { timestampMs: number };"
|
|
3755
3755
|
},
|
|
3756
3756
|
{
|
|
3757
3757
|
"name": "getPermissionStatus",
|
|
@@ -3799,7 +3799,7 @@
|
|
|
3799
3799
|
"name": "MotionWatchOptions",
|
|
3800
3800
|
"kind": "interface",
|
|
3801
3801
|
"jsdoc": "",
|
|
3802
|
-
"decl": "export interface MotionWatchOptions {\n /** Which sensor to stream. Defaults to \"steps\". */\n sensor?: MotionSensor;\n /** Requested sample interval, ms.
|
|
3802
|
+
"decl": "export interface MotionWatchOptions {\n /** Which sensor to stream. Defaults to \"steps\". */\n sensor?: MotionSensor;\n /** Requested sample interval, ms. For the raw sensors (accelerometer / gyroscope /\n * magnetometer) it is clamped to 16–1000 ms (default 100) and honoured, subject to the\n * 60-samples/s ceiling. For steps / altitude / heading the platform treats it as a hint and\n * may deliver faster (heading is event-driven) or slower (a step sample needs steps to have\n * happened). Ignored by the gesture events, which fire when the gesture happens. */\n intervalMs?: number;\n /** Per-poll bridge timeout. Rarely needs changing — see DEFAULT_POLL_TIMEOUT_MS. */\n pollTimeoutMs?: number;\n}"
|
|
3803
3803
|
},
|
|
3804
3804
|
{
|
|
3805
3805
|
"name": "MotionWatcher",
|
|
@@ -3810,7 +3810,7 @@
|
|
|
3810
3810
|
{
|
|
3811
3811
|
"name": "watch",
|
|
3812
3812
|
"kind": "function",
|
|
3813
|
-
"jsdoc": "/**\n * Open a sensor stream. The native listener starts EAGERLY (not on first iteration), so\n * samples buffer from the moment you call `watch()` even if the consumer iterates late —\n * which matters for steps, where a missed window is lost data rather than a stale value.\n *\n * ```ts\n * // Elevation gain over a hike.\n * let gain = 0, prev: number | undefined;\n * const w = watch({ sensor: \"altitude\", intervalMs: 5000 });\n * for await (const s of w) {\n * if (prev != null && s.relativeAltitudeM > prev) gain += s.relativeAltitudeM - prev;\n * prev = s.relativeAltitudeM;\n * if (done) break; // break ⇒ auto-stop\n * }\n * ```\n *\n * Type the stream by passing the sample type: `watch<HeadingSample>({ sensor: \"heading\" })`.\n */",
|
|
3813
|
+
"jsdoc": "/**\n * Open a sensor stream. The native listener starts EAGERLY (not on first iteration), so\n * samples buffer from the moment you call `watch()` even if the consumer iterates late —\n * which matters for steps, where a missed window is lost data rather than a stale value.\n *\n * ```ts\n * // Elevation gain over a hike.\n * let gain = 0, prev: number | undefined;\n * const w = watch({ sensor: \"altitude\", intervalMs: 5000 });\n * for await (const s of w) {\n * if (prev != null && s.relativeAltitudeM > prev) gain += s.relativeAltitudeM - prev;\n * prev = s.relativeAltitudeM;\n * if (done) break; // break ⇒ auto-stop\n * }\n * ```\n *\n * Type the stream by passing the sample type: `watch<HeadingSample>({ sensor: \"heading\" })`.\n *\n * ```ts\n * // Shake to reroll.\n * for await (const _ of watch({ sensor: \"shake\" })) reroll();\n * // Tilt to steer.\n * for await (const t of watch<{ pitch: number; roll: number; timestampMs: number }>({ sensor: \"tilt\" })) steer(t.roll);\n * ```\n */",
|
|
3814
3814
|
"decl": "export function watch<T extends MotionSample = MotionSample>(options?: MotionWatchOptions): MotionWatcher<T>;"
|
|
3815
3815
|
},
|
|
3816
3816
|
{
|
|
@@ -23472,6 +23472,36 @@
|
|
|
23472
23472
|
"kind": "function",
|
|
23473
23473
|
"jsdoc": "/**\n * True when `url` is Wix media that is not PROVABLY bounded below the pixel ceiling\n * the renderers decode at: either dimension missing from the final stage, or either\n * one above `WIX_DETAIL_IMAGE`.\n *\n * Both dimensions are required, and one is genuinely not enough: `fit/w_1400` on a\n * 1400x9000 source derives a 9000px height, so a single stated side proves nothing\n * about the other.\n *\n * This reports the DEFECT. It is deliberately WIDER than what `wixMediaUrl` repairs\n * — the predicate says \"these pixels are not provably bounded\", the rewriter only\n * changes what it can without altering the picture. Four kinds stay flagged after a\n * round-trip:\n * - an oversized `crop` — NOT rewritten; moving `w_`/`h_` selects a different\n * source rectangle, so it needs a human to pick a smaller crop;\n * - EITHER mode stating one dimension — IS rewritten (that side gets bounded, and\n * one side is not a box, so nothing is re-cropped), but the derived side still\n * cannot be proven, so it remains flagged;\n * - a CHAINED transform (`crop/…/fill/…`) — this predicate reads its final stage,\n * but `WIX_TRANSFORM` matches a single stage, so `wixMediaUrl` returns it\n * verbatim. A chained url above the ceiling is therefore reported and not\n * repaired. Rewriting the last stage of a chain is a deliberate follow-up: it\n * is the media manager's own output shape, so it is worth having, and it is\n * more parsing than this change should carry.\n *\n * NOTE: `tools/ci/lint-wix-media-sizing.mjs` does not call this today — it matches\n * hand-built url construction in worker SOURCE, which is a different (static) check.\n * Wiring a runtime gate to this predicate is tracked separately.\n */",
|
|
23474
23474
|
"decl": "export function isUnsizedWixMedia(url: string): boolean;"
|
|
23475
|
+
},
|
|
23476
|
+
{
|
|
23477
|
+
"name": "ImageTarget",
|
|
23478
|
+
"kind": "interface",
|
|
23479
|
+
"jsdoc": "/** Pure rendition policy shared by web/RN. Native mirrors use the same request fixtures. */",
|
|
23480
|
+
"decl": "export interface ImageTarget {\n width: number;\n height: number;\n scale: number;\n mode?: string;\n maxEdge?: number;\n}"
|
|
23481
|
+
},
|
|
23482
|
+
{
|
|
23483
|
+
"name": "imagePixelSize",
|
|
23484
|
+
"kind": "function",
|
|
23485
|
+
"jsdoc": "/**\n * The pixel size an image is requested at for a box of `width`×`height` points at `scale`: the box in pixels,\n * its longer edge rounded up to a shared bucket (96 … 1400, or up to `maxEdge`, at most 4096) so nearby sizes\n * share one cached rendition. A size it returns maps to itself. An invalid box asks for `maxEdge` square.\n */",
|
|
23486
|
+
"decl": "export function imagePixelSize(width: number, height: number, scale: number, maxEdge = 1400);"
|
|
23487
|
+
},
|
|
23488
|
+
{
|
|
23489
|
+
"name": "resolveImageRendition",
|
|
23490
|
+
"kind": "function",
|
|
23491
|
+
"jsdoc": "/** Keep the caller's source untouched: this URL belongs to a display request, not entity data. */",
|
|
23492
|
+
"decl": "export function resolveImageRendition(source: string, target: ImageTarget);"
|
|
23493
|
+
},
|
|
23494
|
+
{
|
|
23495
|
+
"name": "ImageCandidate",
|
|
23496
|
+
"kind": "interface",
|
|
23497
|
+
"jsdoc": "",
|
|
23498
|
+
"decl": "export interface ImageCandidate { url: string; width: number; height: number }"
|
|
23499
|
+
},
|
|
23500
|
+
{
|
|
23501
|
+
"name": "imageCandidates",
|
|
23502
|
+
"kind": "function",
|
|
23503
|
+
"jsdoc": "/**\n * The renditions a renderer offers for one image, smallest first, so the HOST picks among them by\n * its own layout and pixel density (web `srcset`, a React Native `source` array) with no\n * measurement code of ours. A fixed box gets one candidate per screen density; a fluid one (no\n * numeric width) gets fluid widths, its height from `ratio` when known. A source that cannot be\n * resized safely yields exactly itself.\n */",
|
|
23504
|
+
"decl": "export function imageCandidates(\n source: string,\n box: { width?: number; height?: number; ratio?: number; mode?: string },\n scales: number[] = [1, 2, 3],\n): ImageCandidate[];"
|
|
23475
23505
|
}
|
|
23476
23506
|
]
|
|
23477
23507
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wix/himalaya-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1580.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "himi — the Himalaya authoring CLI. Build a Tier-5 content package on your own machine, push it to the production serve as a draft, preview it on web + Himi Player, and read worker logs back — the remote dev loop. Wraps @himalaya/serve-cli for transport.",
|
|
6
6
|
"keywords": [
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
"test": "node ../../tools/ci/run-tests.mjs --package tools/himi-cli --"
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
|
+
"@jitl/quickjs-wasmfile-release-sync": "^0.32.0",
|
|
37
38
|
"@modelcontextprotocol/server": "^2.0.0",
|
|
38
39
|
"@rive-app/canvas": "2.38.3",
|
|
39
40
|
"ajv": "^8.17.1",
|
|
@@ -71,5 +72,5 @@
|
|
|
71
72
|
"artifactId": "himalaya-cli"
|
|
72
73
|
}
|
|
73
74
|
},
|
|
74
|
-
"falconPackageHash": "
|
|
75
|
+
"falconPackageHash": "d3dfbed77e6075f41bbb6a017ff1d9817b572fd8623f52af03471520"
|
|
75
76
|
}
|