@wix/himalaya-cli 0.1606.0 → 0.1608.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/cli.mjs +133 -75
- package/dist/preview-assets.generated.bin +0 -0
- package/guides/himi-json-output.md +6 -0
- package/guides/himi-test.md +1 -1
- package/package.json +2 -2
package/dist/cli.mjs
CHANGED
|
@@ -15065,6 +15065,7 @@ function webViewOriginAllowed(url, origins) {
|
|
|
15065
15065
|
}
|
|
15066
15066
|
var init_webview_origin = __esm({
|
|
15067
15067
|
"../../core/ts/src/webview-origin.ts"() {
|
|
15068
|
+
"use strict";
|
|
15068
15069
|
init_define_HHP_CATALOG();
|
|
15069
15070
|
}
|
|
15070
15071
|
});
|
|
@@ -37624,6 +37625,17 @@ function formIsValid(bag) {
|
|
|
37624
37625
|
}
|
|
37625
37626
|
return true;
|
|
37626
37627
|
}
|
|
37628
|
+
function hasWorkerFormSubmit(node) {
|
|
37629
|
+
if (!node || typeof node !== "object") return false;
|
|
37630
|
+
const n2 = node;
|
|
37631
|
+
const props2 = n2.body?.props ?? n2.props;
|
|
37632
|
+
if (!props2) return false;
|
|
37633
|
+
const action = props2.action ?? props2.onTap;
|
|
37634
|
+
if (typeof action === "string") return action.startsWith("$service:") || action.startsWith("$app:");
|
|
37635
|
+
if (typeof action?.actionId === "string" && action.actionId.startsWith("tier5.")) return true;
|
|
37636
|
+
const child = (value2) => Array.isArray(value2) ? value2.some(child) : !!value2 && typeof value2 === "object" && ("body" in value2 || "type" in value2) && hasWorkerFormSubmit(value2);
|
|
37637
|
+
return Object.values(props2).some(child);
|
|
37638
|
+
}
|
|
37627
37639
|
var validity, formValidityProbe, FormValuesContext;
|
|
37628
37640
|
var init_formBag = __esm({
|
|
37629
37641
|
"../../core/web-renderer/src/formBag.ts"() {
|
|
@@ -37927,7 +37939,7 @@ var init_actionParams = __esm({
|
|
|
37927
37939
|
});
|
|
37928
37940
|
|
|
37929
37941
|
// ../../core/web-renderer/src/workerTapBusy.ts
|
|
37930
|
-
import React7, { useEffect as useEffect3, useRef, useState as useState3 } from "react";
|
|
37942
|
+
import React7, { useContext as useContext2, useEffect as useEffect3, useRef, useState as useState3 } from "react";
|
|
37931
37943
|
function tracksWorkerTap(action) {
|
|
37932
37944
|
if (!action || typeof action !== "object") return false;
|
|
37933
37945
|
const a2 = action;
|
|
@@ -37935,21 +37947,22 @@ function tracksWorkerTap(action) {
|
|
|
37935
37947
|
}
|
|
37936
37948
|
function useWorkerTap(action) {
|
|
37937
37949
|
const actionId = tracksWorkerTap(action) ? action.actionId : null;
|
|
37950
|
+
const owned = useContext2(WorkerTapScopeContext);
|
|
37938
37951
|
const [busy, setBusy] = useState3(false);
|
|
37939
37952
|
const tap = useRef(null);
|
|
37940
37953
|
useEffect3(() => {
|
|
37941
|
-
|
|
37954
|
+
setBusy(false);
|
|
37955
|
+
const current = new WorkerTap(actionId, setBusy, owned);
|
|
37942
37956
|
tap.current = current;
|
|
37943
37957
|
return () => {
|
|
37944
37958
|
current.dispose();
|
|
37945
37959
|
tap.current = null;
|
|
37946
37960
|
};
|
|
37947
|
-
}, [actionId]);
|
|
37948
|
-
return { busy, tapped: () => tap.current?.tapped() };
|
|
37961
|
+
}, [actionId, owned]);
|
|
37962
|
+
return { busy, tapped: (action2) => tap.current?.tapped(action2) ?? action2 };
|
|
37949
37963
|
}
|
|
37950
37964
|
function workerTapGateRef() {
|
|
37951
|
-
return { busy: false, tapped: () =>
|
|
37952
|
-
} };
|
|
37965
|
+
return { busy: false, tapped: (action) => action };
|
|
37953
37966
|
}
|
|
37954
37967
|
function WorkerTapGate({ gate, action, children, ...forwarded }) {
|
|
37955
37968
|
const { busy, tapped } = useWorkerTap(action);
|
|
@@ -37962,18 +37975,21 @@ function WorkerTapGate({ gate, action, children, ...forwarded }) {
|
|
|
37962
37975
|
if (busy) next["aria-disabled"] = "true";
|
|
37963
37976
|
return React7.cloneElement(children, next);
|
|
37964
37977
|
}
|
|
37965
|
-
var WORKER_TAP_DELAY_MS, WORKER_TAP_CAP_MS, listeners, WorkerTap;
|
|
37978
|
+
var WORKER_TAP_DELAY_MS, WORKER_TAP_CAP_MS, listeners, TAP_FINISHED, WorkerTapScopeContext, WorkerTap;
|
|
37966
37979
|
var init_workerTapBusy = __esm({
|
|
37967
37980
|
"../../core/web-renderer/src/workerTapBusy.ts"() {
|
|
37968
37981
|
init_define_HHP_CATALOG();
|
|
37969
37982
|
WORKER_TAP_DELAY_MS = 150;
|
|
37970
37983
|
WORKER_TAP_CAP_MS = 15e3;
|
|
37971
37984
|
listeners = /* @__PURE__ */ new Set();
|
|
37985
|
+
TAP_FINISHED = Symbol();
|
|
37986
|
+
WorkerTapScopeContext = React7.createContext(false);
|
|
37972
37987
|
WorkerTap = class {
|
|
37973
|
-
constructor(actionId, onChange) {
|
|
37988
|
+
constructor(actionId, onChange, owned = false) {
|
|
37974
37989
|
this.actionId = actionId;
|
|
37975
37990
|
this.onChange = onChange;
|
|
37976
|
-
|
|
37991
|
+
this.owned = owned;
|
|
37992
|
+
if (actionId && !owned) {
|
|
37977
37993
|
const listener = (id) => {
|
|
37978
37994
|
if (id === actionId) this.settle();
|
|
37979
37995
|
};
|
|
@@ -37986,16 +38002,30 @@ var init_workerTapBusy = __esm({
|
|
|
37986
38002
|
busy = false;
|
|
37987
38003
|
timers = [];
|
|
37988
38004
|
stop = null;
|
|
38005
|
+
pending;
|
|
38006
|
+
disposed = false;
|
|
37989
38007
|
/** Call BEFORE dispatching the tap's action, so a fast finish cannot arrive first. */
|
|
37990
|
-
tapped() {
|
|
37991
|
-
if (!this.actionId) return;
|
|
38008
|
+
tapped(action) {
|
|
38009
|
+
if (!this.actionId) return action;
|
|
37992
38010
|
this.clear();
|
|
37993
38011
|
this.timers = [
|
|
37994
38012
|
setTimeout(() => this.set(true), WORKER_TAP_DELAY_MS),
|
|
37995
|
-
setTimeout(() =>
|
|
38013
|
+
setTimeout(() => {
|
|
38014
|
+
this.pending?.clear();
|
|
38015
|
+
this.set(false);
|
|
38016
|
+
}, WORKER_TAP_CAP_MS)
|
|
37996
38017
|
];
|
|
38018
|
+
if (!this.owned || !action || typeof action !== "object") return action;
|
|
38019
|
+
this.pending ??= /* @__PURE__ */ new Set();
|
|
38020
|
+
const finished = () => {
|
|
38021
|
+
if (this.pending?.delete(finished) && !this.pending.size) this.settle();
|
|
38022
|
+
};
|
|
38023
|
+
this.pending.add(finished);
|
|
38024
|
+
return { ...action, [TAP_FINISHED]: finished };
|
|
37997
38025
|
}
|
|
37998
38026
|
dispose() {
|
|
38027
|
+
this.disposed = true;
|
|
38028
|
+
this.pending?.clear();
|
|
37999
38029
|
this.clear();
|
|
38000
38030
|
this.stop?.();
|
|
38001
38031
|
this.stop = null;
|
|
@@ -38009,7 +38039,7 @@ var init_workerTapBusy = __esm({
|
|
|
38009
38039
|
this.timers = [];
|
|
38010
38040
|
}
|
|
38011
38041
|
set(busy) {
|
|
38012
|
-
if (this.busy === busy) return;
|
|
38042
|
+
if (this.disposed || this.busy === busy) return;
|
|
38013
38043
|
this.busy = busy;
|
|
38014
38044
|
this.onChange(busy);
|
|
38015
38045
|
}
|
|
@@ -122866,6 +122896,7 @@ function makeCtx(tokens2, scheme = "light", opts = {}) {
|
|
|
122866
122896
|
localeTag: opts.localeTag,
|
|
122867
122897
|
provider,
|
|
122868
122898
|
workerReady: opts.workerReady,
|
|
122899
|
+
formReadiness: opts.formReadiness,
|
|
122869
122900
|
// `$service:` bindings in a NON-worker action's params resolve against the
|
|
122870
122901
|
// live provider at DISPATCH (tap) time — here, the one seam every renderer
|
|
122871
122902
|
// dispatch point flows through and where the provider is in scope (see
|
|
@@ -125330,15 +125361,15 @@ function renderNodeInner(node, ctx) {
|
|
|
125330
125361
|
const nestedControl = tapActivator && typeof target.closest === "function" ? target.closest(NESTED_CONTROL_SELECTOR) : null;
|
|
125331
125362
|
if (nestedControl && nestedControl !== e2.currentTarget && !nestedControl.hasAttribute(TAP_ACTIVATOR_ATTR)) return;
|
|
125332
125363
|
if (busyGate?.busy) return;
|
|
125333
|
-
busyGate?.tapped();
|
|
125334
125364
|
prevOnClick?.(e2);
|
|
125335
|
-
|
|
125365
|
+
const action = resolveItemDeep2(tap, ctx);
|
|
125366
|
+
ctx.onAction(busyGate ? busyGate.tapped(action) : action);
|
|
125336
125367
|
};
|
|
125337
125368
|
giveControlContract((e2) => {
|
|
125338
125369
|
if (busyGate?.busy) return;
|
|
125339
|
-
busyGate?.tapped();
|
|
125340
125370
|
prevOnClick?.(e2);
|
|
125341
|
-
|
|
125371
|
+
const action = resolveItemDeep2(tap, ctx);
|
|
125372
|
+
ctx.onAction(busyGate ? busyGate.tapped(action) : action);
|
|
125342
125373
|
});
|
|
125343
125374
|
ensurePressStyles();
|
|
125344
125375
|
extra["data-himalaya-tap"] = "1";
|
|
@@ -127000,9 +127031,18 @@ var init_renderNode = __esm({
|
|
|
127000
127031
|
const [touched, setTouched] = React16.useState(false);
|
|
127001
127032
|
const [isFocused, setIsFocused] = React16.useState(false);
|
|
127002
127033
|
const pendingEdits = React16.useRef([]);
|
|
127034
|
+
const previousBoundBinding = React16.useRef(binding2);
|
|
127003
127035
|
const previousBoundText = React16.useRef(boundText);
|
|
127004
127036
|
const previousBoundRawText = React16.useRef(boundRawText);
|
|
127037
|
+
const deferredExternalText = React16.useRef(false);
|
|
127005
127038
|
React16.useEffect(() => {
|
|
127039
|
+
const bindingChanged = previousBoundBinding.current !== binding2;
|
|
127040
|
+
previousBoundBinding.current = binding2;
|
|
127041
|
+
if (bindingChanged) {
|
|
127042
|
+
changes.current?.drop();
|
|
127043
|
+
pendingEdits.current = [];
|
|
127044
|
+
deferredExternalText.current = true;
|
|
127045
|
+
}
|
|
127006
127046
|
if (!isBound || boundText === void 0) return;
|
|
127007
127047
|
const boundTextChanged = previousBoundText.current !== boundText;
|
|
127008
127048
|
const boundRawTextChanged = previousBoundRawText.current !== boundRawText;
|
|
@@ -127011,11 +127051,13 @@ var init_renderNode = __esm({
|
|
|
127011
127051
|
pendingEdits.current = pendingEdits.current.filter((edit) => Date.now() - edit.at < 3e4);
|
|
127012
127052
|
const acknowledged = pendingEdits.current.findIndex((edit) => edit.value === boundRawText);
|
|
127013
127053
|
if (acknowledged >= 0) {
|
|
127054
|
+
deferredExternalText.current = false;
|
|
127014
127055
|
pendingEdits.current.splice(0, acknowledged + 1);
|
|
127015
127056
|
if (pendingEdits.current.length > 0 || changes.current?.pending != null) return;
|
|
127016
127057
|
}
|
|
127017
127058
|
if (boundText === "") {
|
|
127018
|
-
|
|
127059
|
+
deferredExternalText.current = false;
|
|
127060
|
+
if (bindingChanged || boundTextChanged || serializeRichText && boundRawTextChanged) {
|
|
127019
127061
|
changes.current?.drop();
|
|
127020
127062
|
if (local !== "") setLocal("");
|
|
127021
127063
|
if (serializeRichText) {
|
|
@@ -127032,8 +127074,12 @@ var init_renderNode = __esm({
|
|
|
127032
127074
|
}
|
|
127033
127075
|
return;
|
|
127034
127076
|
}
|
|
127035
|
-
if (
|
|
127036
|
-
|
|
127077
|
+
if (boundTextChanged && acknowledged < 0) deferredExternalText.current = true;
|
|
127078
|
+
if (!focused.current && changes.current?.pending == null && deferredExternalText.current) {
|
|
127079
|
+
if (boundText !== local) setLocal(boundText);
|
|
127080
|
+
deferredExternalText.current = false;
|
|
127081
|
+
}
|
|
127082
|
+
}, [binding2, boundText, serializeRichText ? boundRawText : void 0, isFocused, serializeRichText ? edited : false]);
|
|
127037
127083
|
const formBag = React16.useContext(FormValuesContext);
|
|
127038
127084
|
const fieldId = props2.__formFieldId;
|
|
127039
127085
|
const previousBinding = React16.useRef(binding2);
|
|
@@ -127054,11 +127100,15 @@ var init_renderNode = __esm({
|
|
|
127054
127100
|
if (previousBinding.current === binding2) return;
|
|
127055
127101
|
previousBinding.current = binding2;
|
|
127056
127102
|
pendingEdits.current = [];
|
|
127057
|
-
|
|
127058
|
-
|
|
127103
|
+
previousBoundText.current = boundText;
|
|
127104
|
+
previousBoundRawText.current = boundRawText;
|
|
127105
|
+
deferredExternalText.current = false;
|
|
127106
|
+
if (fieldId && (serializeRichText || isBound && boundText === void 0)) formBag?.clearValue(fieldId);
|
|
127059
127107
|
const nextPristineValue = isBound ? boundRawText : typeof valueBinding === "string" ? valueBinding : void 0;
|
|
127060
|
-
|
|
127061
|
-
|
|
127108
|
+
const nextLocal = isBound ? boundText ?? "" : literalText;
|
|
127109
|
+
if (fieldId && !serializeRichText) formBag?.set(fieldId, nextLocal);
|
|
127110
|
+
else if (fieldId && nextPristineValue) formBag?.set(fieldId, nextPristineValue);
|
|
127111
|
+
setLocal(nextLocal);
|
|
127062
127112
|
setEdited(false);
|
|
127063
127113
|
setPristineRichValue(nextPristineValue);
|
|
127064
127114
|
setTouched(false);
|
|
@@ -127218,7 +127268,7 @@ var init_renderNode = __esm({
|
|
|
127218
127268
|
prefixText && /* @__PURE__ */ jsx11("span", { style: { color: muted, flex: "none" }, children: prefixText }),
|
|
127219
127269
|
multilineBox ? /* @__PURE__ */ jsx11("textarea", { "data-component-id": componentId, id: fieldDomId, "data-component-type": componentType, ...a11yFwd, ref: inputRef, value: local, onChange: onInput, onKeyDown, onFocus: onFieldFocus, onBlur: onFieldBlur, placeholder: placeholder3, dir: fieldDir, rows: 2, "aria-label": ariaLabelProp ?? placeholderName, "aria-labelledby": labelledBy, "aria-required": required3, "aria-invalid": errored || void 0, "aria-describedby": [errorId, describedByProp].filter(Boolean).join(" ") || void 0, inputMode, autoCapitalize, maxLength, autoCorrect: suggestOff ? "off" : suggestOn ? "on" : void 0, spellCheck: suggestOff ? false : suggestOn ? true : void 0, autoComplete: suggestOff ? "off" : void 0, style: inputBase }) : /* @__PURE__ */ jsx11("input", { "data-component-id": componentId, id: htmlId, "data-component-type": componentType, ...a11yFwd, ref: inputRef, type: secure && !(visibilityToggle && valueVisible) ? "password" : "text", value: local, onChange: onInput, onKeyDown, onFocus: onFieldFocus, onBlur: onFieldBlur, placeholder: placeholder3, dir: fieldDir, "aria-label": ariaLabelProp ?? placeholderName, "aria-labelledby": labelledBy, "aria-required": required3, "aria-invalid": errored || void 0, "aria-describedby": [errorId, describedByProp].filter(Boolean).join(" ") || void 0, inputMode, autoCapitalize, maxLength, autoCorrect: suggestOff ? "off" : suggestOn ? "on" : void 0, spellCheck: suggestOff ? false : suggestOn ? true : void 0, autoComplete: suggestOff ? "off" : void 0, enterKeyHint, style: inputBase }),
|
|
127220
127270
|
suffixText && /* @__PURE__ */ jsx11("span", { style: { color: muted, flex: "none" }, children: suffixText }),
|
|
127221
|
-
props2.clearButton && local && /* @__PURE__ */ jsx11("span", { onClick: () => {
|
|
127271
|
+
props2.clearButton && local && !(ctx.formReadiness && ctx.formReadiness !== "ready" && !ctx.onAction) && /* @__PURE__ */ jsx11("span", { onClick: () => {
|
|
127222
127272
|
setLocal("");
|
|
127223
127273
|
setEdited(true);
|
|
127224
127274
|
emitNow("");
|
|
@@ -127565,8 +127615,7 @@ var init_renderNode = __esm({
|
|
|
127565
127615
|
const io2 = new IntersectionObserver((entries) => {
|
|
127566
127616
|
if (!live3 || !entries[entries.length - 1]?.isIntersecting) return;
|
|
127567
127617
|
if (pages2.claim(cycle)) {
|
|
127568
|
-
workerTap.tapped();
|
|
127569
|
-
ctx.onAction?.(firedWithoutTap(action));
|
|
127618
|
+
ctx.onAction?.(workerTap.tapped(firedWithoutTap(action)));
|
|
127570
127619
|
}
|
|
127571
127620
|
}, { root, rootMargin: "0px 0px 320px 0px" });
|
|
127572
127621
|
io2.observe(el2);
|
|
@@ -127592,7 +127641,12 @@ var init_renderNode = __esm({
|
|
|
127592
127641
|
text13
|
|
127593
127642
|
] });
|
|
127594
127643
|
});
|
|
127595
|
-
FormView = withExtras("FormView", ({ props: props2, ctx, wrap }) => {
|
|
127644
|
+
FormView = withExtras("FormView", ({ props: props2, ctx: inputCtx, wrap }) => {
|
|
127645
|
+
const needsWorker = hasWorkerFormSubmit(props2.submitButton);
|
|
127646
|
+
const unavailable = needsWorker && inputCtx.formReadiness === "unavailable";
|
|
127647
|
+
const refreshing = needsWorker && inputCtx.formReadiness === "refreshing";
|
|
127648
|
+
const waiting = needsWorker && !unavailable && (refreshing || inputCtx.formReadiness === "pending" || inputCtx.formReadiness === void 0 && inputCtx.workerReady === false);
|
|
127649
|
+
const ctx = waiting || unavailable ? { ...inputCtx, onAction: null } : inputCtx;
|
|
127596
127650
|
const bagRef = React16.useRef(null);
|
|
127597
127651
|
if (!bagRef.current) bagRef.current = createFormBag();
|
|
127598
127652
|
const bag = bagRef.current;
|
|
@@ -127616,14 +127670,18 @@ var init_renderNode = __esm({
|
|
|
127616
127670
|
};
|
|
127617
127671
|
const submitNode = React16.useMemo(() => {
|
|
127618
127672
|
const node = props2.submitButton;
|
|
127619
|
-
if (!node || valid) return node;
|
|
127673
|
+
if (!node || valid && !waiting && !unavailable) return node;
|
|
127620
127674
|
if (node.body) return { ...node, body: { ...node.body, props: { ...node.body.props ?? {}, disabled: true } } };
|
|
127621
127675
|
return { ...node, props: { ...node.props ?? {}, disabled: true } };
|
|
127622
|
-
}, [props2.submitButton, valid]);
|
|
127623
|
-
return /* @__PURE__ */
|
|
127624
|
-
|
|
127625
|
-
|
|
127626
|
-
|
|
127676
|
+
}, [props2.submitButton, valid, waiting, unavailable]);
|
|
127677
|
+
return /* @__PURE__ */ jsxs9("div", { "aria-busy": waiting || void 0, style: { display: "flex", flexDirection: "column", gap: 14, width: "100%", ...wrap }, children: [
|
|
127678
|
+
waiting && /* @__PURE__ */ jsx11("span", { role: "status", children: refreshing ? "Refreshing form\u2026" : "Loading form\u2026" }),
|
|
127679
|
+
unavailable && /* @__PURE__ */ jsx11("span", { role: "status", children: "Form unavailable. Please try again." }),
|
|
127680
|
+
/* @__PURE__ */ jsxs9(FormValuesContext.Provider, { value: bag, children: [
|
|
127681
|
+
/* @__PURE__ */ jsx11("fieldset", { disabled: waiting || unavailable, style: { display: waiting && !refreshing ? "none" : "contents", border: 0, padding: 0, margin: 0, minWidth: 0 }, children: kids2(props2.fields, ctx) }),
|
|
127682
|
+
submitNode && renderNode(submitNode, submitCtx)
|
|
127683
|
+
] })
|
|
127684
|
+
] });
|
|
127627
127685
|
});
|
|
127628
127686
|
MediaSlotProvider = class {
|
|
127629
127687
|
constructor(state) {
|
|
@@ -129323,8 +129381,7 @@ var init_renderNode = __esm({
|
|
|
129323
129381
|
const disabled = props2.disabled === true || loading || hiddenBool(boundDisabled);
|
|
129324
129382
|
const onClick = ctx.onAction && props2.action && !disabled ? (e2) => {
|
|
129325
129383
|
e2?.stopPropagation?.();
|
|
129326
|
-
workerTap.tapped();
|
|
129327
|
-
ctx.onAction(resolveItemDeep2(props2.action, ctx));
|
|
129384
|
+
ctx.onAction(workerTap.tapped(resolveItemDeep2(props2.action, ctx)));
|
|
129328
129385
|
} : void 0;
|
|
129329
129386
|
const builtInFg = primary ? C2("textOnAccent", "#fff") : destructive ? C2("danger", "#E62214") : accentTextColor(ctx);
|
|
129330
129387
|
const fg = bt2.label != null ? C2(bt2.label, builtInFg) : builtInFg;
|
|
@@ -129428,7 +129485,7 @@ var init_renderNode = __esm({
|
|
|
129428
129485
|
...wrap
|
|
129429
129486
|
}, rowStretch, "fit-content"),
|
|
129430
129487
|
children: [
|
|
129431
|
-
loading && /* @__PURE__ */ jsx11("span", { style: { width: glyph, height: glyph, borderRadius: "50%", border: `2px solid ${rgba(fg, primary ? 0.4 : 0.35)}`, borderTopColor: fg, animation: ctx.empty ? void 0 : "himalaya-spin .7s linear infinite" } }),
|
|
129488
|
+
loading && /* @__PURE__ */ jsx11("span", { style: { width: glyph, height: glyph, boxSizing: "border-box", borderRadius: "50%", border: `2px solid ${rgba(fg, primary ? 0.4 : 0.35)}`, borderTopColor: fg, animation: ctx.empty ? void 0 : "himalaya-spin .7s linear infinite" } }),
|
|
129432
129489
|
!loading && resolvedLeadingIcon && ic(String(resolvedLeadingIcon)),
|
|
129433
129490
|
!props2.iconOnly && (resolvedTitle != null && resolvedTitle !== "" ? String(resolvedTitle) : txt(props2.title, ctx) || "Button"),
|
|
129434
129491
|
!loading && !props2.iconOnly && resolvedTrailingIcon && ic(String(resolvedTrailingIcon))
|
|
@@ -183810,44 +183867,44 @@ var init_preview_assets_generated = __esm({
|
|
|
183810
183867
|
init_define_HHP_CATALOG();
|
|
183811
183868
|
init_preview_assets_format();
|
|
183812
183869
|
PREVIEW_ASSET_MANIFEST = [
|
|
183813
|
-
{ key: "assets/DashboardHost-
|
|
183814
|
-
{ key: "assets/DevDrawer-
|
|
183815
|
-
{ key: "assets/IdiomCompare-
|
|
183816
|
-
{ key: "assets/LightboxViewer-
|
|
183817
|
-
{ key: "assets/OfflineReadingBar-
|
|
183818
|
-
{ key: "assets/PhonePreviewControl-
|
|
183819
|
-
{ key: "assets/SchemeCompare-
|
|
183820
|
-
{ key: "assets/WixFrogTelemetrySink-
|
|
183870
|
+
{ key: "assets/DashboardHost-BlHG_7xw.js", contentType: "application/javascript; charset=utf-8", offset: 8, length: 2971, sha256: "a98873322f4a9c7ff349cf63c6be21ba1267f3819892d8c868c26eaad85b7f53" },
|
|
183871
|
+
{ key: "assets/DevDrawer-DWVwEc0w.js", contentType: "application/javascript; charset=utf-8", offset: 2979, length: 16783, sha256: "f786eeeeeadb90b7f7bec65790b881aac4aec8141a1afcc715093aae232415da" },
|
|
183872
|
+
{ key: "assets/IdiomCompare-q7oMoKQ4.js", contentType: "application/javascript; charset=utf-8", offset: 19762, length: 1926, sha256: "51092198c8c0d1105908bddbe634998ce6ec1bf6095ed6a5e0c4baaaa69443c5" },
|
|
183873
|
+
{ key: "assets/LightboxViewer-CC4HCCbi.js", contentType: "application/javascript; charset=utf-8", offset: 21688, length: 8171, sha256: "c2dc12514f3e757992022b636d0e918699d4a0ae1bca30eb474c33ed97e75e66" },
|
|
183874
|
+
{ key: "assets/OfflineReadingBar-CcDoAnjr.js", contentType: "application/javascript; charset=utf-8", offset: 29859, length: 1707, sha256: "123e8008ddf241a3b3eb56588c6ec6915344db05846f6bc1e45132a9f63bfd40" },
|
|
183875
|
+
{ key: "assets/PhonePreviewControl-DphdrcOd.js", contentType: "application/javascript; charset=utf-8", offset: 31566, length: 37768, sha256: "4518e7541d329710acdf9a3586e461bdb39e2f1f4bef1324336245c70b93219d" },
|
|
183876
|
+
{ key: "assets/SchemeCompare-CTWZfu6o.js", contentType: "application/javascript; charset=utf-8", offset: 69334, length: 1858, sha256: "ef99c41a4b18efe70122116bd4f3981d98585efb6c938f0bcc877483b8ea9b35" },
|
|
183877
|
+
{ key: "assets/WixFrogTelemetrySink-Co0Yr3kA.js", contentType: "application/javascript; charset=utf-8", offset: 71192, length: 3165, sha256: "555afbed68e08a39b950ce0c3ff0a4e62f5e95a1cba63d67f142813b262c24e1" },
|
|
183821
183878
|
{ key: "assets/calendar-ics-BvfIYWjG.js", contentType: "application/javascript; charset=utf-8", offset: 74357, length: 2192, sha256: "1636167041e9829ceccd3544297b86b8475c38bd2f759c4dbc17c813dc6e9254" },
|
|
183822
|
-
{ key: "assets/files-transfer-
|
|
183879
|
+
{ key: "assets/files-transfer-Cz8o5H76.js", contentType: "application/javascript; charset=utf-8", offset: 76549, length: 6446, sha256: "8f1661e16d93d8a7eaca2e68dd955b8eea3e0d9959f28e3d3c1730d7ea3d1777" },
|
|
183823
183880
|
{ key: "assets/glassPreviewBrowser-DONaOehd.js", contentType: "application/javascript; charset=utf-8", offset: 82995, length: 6578, sha256: "4402c4cddd2a564e7466cdf1e12a0e0277c0400b288e1e5eda1d23e797599d31" },
|
|
183824
183881
|
{ key: "assets/image-preparation-Cj4gldm6.js", contentType: "application/javascript; charset=utf-8", offset: 89573, length: 2704, sha256: "32944ea587c2f3b84389b66b50a850437560238f1c8d33b6275973ee04eee865" },
|
|
183825
|
-
{ key: "assets/index-
|
|
183826
|
-
{ key: "assets/jsx-runtime-CY_jTiqj.js", contentType: "application/javascript; charset=utf-8", offset:
|
|
183827
|
-
{ key: "assets/pdf-
|
|
183828
|
-
{ key: "assets/pdf.worker.min-BGnVRhRG.js", contentType: "application/javascript; charset=utf-8", offset:
|
|
183829
|
-
{ key: "assets/pdf.worker.min-BmVo14Nb.mjs", contentType: "application/javascript; charset=utf-8", offset:
|
|
183830
|
-
{ key: "assets/pdfDocument-
|
|
183831
|
-
{ key: "assets/pdfFetch-Cc8i1I1h.js", contentType: "application/javascript; charset=utf-8", offset:
|
|
183832
|
-
{ key: "assets/webviewBridgeHost-
|
|
183833
|
-
{ key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset:
|
|
183834
|
-
{ key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset:
|
|
183835
|
-
{ key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset:
|
|
183836
|
-
{ key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset:
|
|
183837
|
-
{ key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset:
|
|
183838
|
-
{ key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset:
|
|
183839
|
-
{ key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset:
|
|
183840
|
-
{ key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset:
|
|
183841
|
-
{ key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset:
|
|
183842
|
-
{ key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset:
|
|
183843
|
-
{ key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset:
|
|
183844
|
-
{ key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset:
|
|
183845
|
-
{ key: "himi-sw.js", contentType: "application/javascript; charset=utf-8", offset:
|
|
183846
|
-
{ key: "index.html", contentType: "text/html; charset=utf-8", offset:
|
|
183847
|
-
{ key: "ios-glass-preview.css", contentType: "text/css; charset=utf-8", offset:
|
|
183848
|
-
{ key: "kit-tab-bar.css", contentType: "text/css; charset=utf-8", offset:
|
|
183849
|
-
{ key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset:
|
|
183850
|
-
{ key: "t5-worker-frame.html", contentType: "text/html; charset=utf-8", offset:
|
|
183882
|
+
{ key: "assets/index-D32TnChd.js", contentType: "application/javascript; charset=utf-8", offset: 92277, length: 1502718, sha256: "edbcdb28b09baeba4bdf5a7a45e9053c0a70970994d236161862a503423d8363" },
|
|
183883
|
+
{ key: "assets/jsx-runtime-CY_jTiqj.js", contentType: "application/javascript; charset=utf-8", offset: 1594995, length: 7624, sha256: "29dfba5b56f79a0b84d6b04d84d87617454baeba03c225f682ab2ab7ae2d5016" },
|
|
183884
|
+
{ key: "assets/pdf-mTl-i7am.js", contentType: "application/javascript; charset=utf-8", offset: 1602619, length: 488215, sha256: "18af3f1aeb2867464a4d53a332c7a6b1b5791d2f2558a681de0f785860f30090" },
|
|
183885
|
+
{ key: "assets/pdf.worker.min-BGnVRhRG.js", contentType: "application/javascript; charset=utf-8", offset: 2090834, length: 90, sha256: "521a0e528916d678d7588b2cddf3dadd3bb959a6d62426382f61c77a82017e35" },
|
|
183886
|
+
{ key: "assets/pdf.worker.min-BmVo14Nb.mjs", contentType: "application/javascript; charset=utf-8", offset: 2090924, length: 1317034, sha256: "a33cfe728c584fdba4fcc1fd54bcdc2f9f2f13889ddbb5b2bd1d0f8cbe49b84e" },
|
|
183887
|
+
{ key: "assets/pdfDocument-BokqqgsB.js", contentType: "application/javascript; charset=utf-8", offset: 3407958, length: 3470, sha256: "e28160bf73bb8ec7adafa888693a7f50befe46b125cc22415d066599e8d6dfb3" },
|
|
183888
|
+
{ key: "assets/pdfFetch-Cc8i1I1h.js", contentType: "application/javascript; charset=utf-8", offset: 3411428, length: 2266, sha256: "1d21ad008921942217c9eac0c35b1713773b9d89c71e3ab4412781f7bb88f463" },
|
|
183889
|
+
{ key: "assets/webviewBridgeHost-DBdQALYU.js", contentType: "application/javascript; charset=utf-8", offset: 3413694, length: 9888, sha256: "6b4a160189b882d826c9c7aa962e5119a694f3519688c4069c1b7d44f1a487c6" },
|
|
183890
|
+
{ key: "fonts/Roboto-LICENSE.txt", contentType: "application/octet-stream", offset: 3423582, length: 4610, sha256: "994062dd7af4186a739de55dd9e151c63b6301f8e2cbafc608d35c2e87da0cd2" },
|
|
183891
|
+
{ key: "fonts/Roboto-Variable.ttf", contentType: "font/ttf", offset: 3428192, length: 488584, sha256: "d7598e12c5dbef095ff8272cfc55da0250bd07fbdecbac8a530b9b277872a134" },
|
|
183892
|
+
{ key: "fonts/WixMadeforDisplay-Bold.ttf", contentType: "font/ttf", offset: 3916776, length: 90924, sha256: "ec4c7d63772d980d6e147b2df6215fd2737e4b04cebe0cf7e11dc695fb63cdcf" },
|
|
183893
|
+
{ key: "fonts/WixMadeforDisplay-ExtraBold.ttf", contentType: "font/ttf", offset: 4007700, length: 90984, sha256: "bf4c16a2774edd38a921edf3099469866cd74c094fd596f3fa4e81f54a04dfaa" },
|
|
183894
|
+
{ key: "fonts/WixMadeforDisplay-Medium.ttf", contentType: "font/ttf", offset: 4098684, length: 90980, sha256: "368faca44fb9f7207e4af784e94750b1ee59c1098b8689e0f4a918926f244fb5" },
|
|
183895
|
+
{ key: "fonts/WixMadeforDisplay-Regular.ttf", contentType: "font/ttf", offset: 4189664, length: 90872, sha256: "97ed8f1a6772abe26e3d8af5cecfc4b02faa94497d585b0398b5053b739a70c1" },
|
|
183896
|
+
{ key: "fonts/WixMadeforDisplay-SemiBold.ttf", contentType: "font/ttf", offset: 4280536, length: 90980, sha256: "642feab8a48ddf6c7a89d7c2a7c0edfa0e6e773f671287e460e222703563191e" },
|
|
183897
|
+
{ key: "fonts/WixMadeforText-Bold.ttf", contentType: "font/ttf", offset: 4371516, length: 108636, sha256: "37c179b4fefb63ea9637322b84583a2df53aa226c150294eea1675c14b1b8e29" },
|
|
183898
|
+
{ key: "fonts/WixMadeforText-ExtraBold.ttf", contentType: "font/ttf", offset: 4480152, length: 109084, sha256: "62e2fe4718129f36ecdb0ae4de385bd6b81ecc876146447167c6c140fad699a9" },
|
|
183899
|
+
{ key: "fonts/WixMadeforText-Medium.ttf", contentType: "font/ttf", offset: 4589236, length: 109048, sha256: "4ecf270136af928612c76fe4ebade91d8156975e5ea4c0cf9225501dd1788e02" },
|
|
183900
|
+
{ key: "fonts/WixMadeforText-Regular.ttf", contentType: "font/ttf", offset: 4698284, length: 107700, sha256: "dee56f09fd3efc127c1ea95557edc74110c1460a46287da36e0af25efd341ef5" },
|
|
183901
|
+
{ key: "fonts/WixMadeforText-SemiBold.ttf", contentType: "font/ttf", offset: 4805984, length: 88108, sha256: "dced97a77624bc5f8b1ae65850360908297f4588e09feb6f22792d29dc7e765b" },
|
|
183902
|
+
{ key: "himi-sw.js", contentType: "application/javascript; charset=utf-8", offset: 4894092, length: 6818, sha256: "835250c3d8004f27c2b67f9b471984351ba6df07b916d97e33b43c691200a18c" },
|
|
183903
|
+
{ key: "index.html", contentType: "text/html; charset=utf-8", offset: 4900910, length: 4924, sha256: "baa64161cf90267f8f942d1223c742ffb441330a3372f53e52496517961c829f" },
|
|
183904
|
+
{ key: "ios-glass-preview.css", contentType: "text/css; charset=utf-8", offset: 4905834, length: 11457, sha256: "6cb2b75264fa5fa2b4d28851878a5eab0712900e8b3a6c2370cc661d6d820805" },
|
|
183905
|
+
{ key: "kit-tab-bar.css", contentType: "text/css; charset=utf-8", offset: 4917291, length: 1171, sha256: "9e2c3a0faaf05d5471badf167a4d3bdf1c4e6dd65c432eea6d254158bfd99585" },
|
|
183906
|
+
{ key: "t5-frame.html", contentType: "text/html; charset=utf-8", offset: 4918462, length: 23047, sha256: "20d1459e3f896f344e478e613d0c979a0de02e81a929a45d3a0ef6a53af36441" },
|
|
183907
|
+
{ key: "t5-worker-frame.html", contentType: "text/html; charset=utf-8", offset: 4941509, length: 23064, sha256: "8655cfe9c74212ec5dafecb49d2fdeb48b19f1bd8a710091e3e55631f9b4ab06" }
|
|
183851
183908
|
];
|
|
183852
183909
|
}
|
|
183853
183910
|
});
|
|
@@ -206590,7 +206647,8 @@ function parseFlags(argv) {
|
|
|
206590
206647
|
} else {
|
|
206591
206648
|
const next = argv[i2 + 1];
|
|
206592
206649
|
const optionalNativeWithoutValue = a2 === "--native" && next !== "ios" && next !== "android";
|
|
206593
|
-
const
|
|
206650
|
+
const numericDepth = a2 === "--deep" && next !== void 0 && /^(?:[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|[+-]?Infinity|NaN)$/i.test(next);
|
|
206651
|
+
const booleanOnly = BOOLEAN_FLAGS.has(a2.slice(2)) && !numericDepth;
|
|
206594
206652
|
if (!optionalNativeWithoutValue && !booleanOnly && next !== void 0 && !next.startsWith("--")) {
|
|
206595
206653
|
assign(flags, a2.slice(2), next);
|
|
206596
206654
|
i2++;
|
|
@@ -209291,8 +209349,8 @@ async function testCommand(ctx) {
|
|
|
209291
209349
|
let deep;
|
|
209292
209350
|
if (flags.deep !== void 0) {
|
|
209293
209351
|
deep = flags.deep === true ? 3 : Number(str3(flags.deep));
|
|
209294
|
-
if (!Number.
|
|
209295
|
-
io2.error(JSON.stringify({ error: `--deep takes
|
|
209352
|
+
if (!Number.isInteger(deep) || deep < 2 || deep > 6) {
|
|
209353
|
+
io2.error(JSON.stringify({ code: "invalid_usage", error: `--deep takes an integer chain depth between 2 and 6 (got "${String(flags.deep)}") \u2014 bare --deep means 3` }));
|
|
209296
209354
|
return 2;
|
|
209297
209355
|
}
|
|
209298
209356
|
}
|
|
Binary file
|
|
@@ -87,6 +87,12 @@ The check reads built descriptors, not every possible runtime string. A passing
|
|
|
87
87
|
result does not verify dynamic live data, translations, branding images or device
|
|
88
88
|
appearance. It does not change publication or coverage policy.
|
|
89
89
|
|
|
90
|
+
## `himi test` depth codes
|
|
91
|
+
|
|
92
|
+
Invalid `--deep` values emit `code: "invalid_usage"` on stderr and exit 2.
|
|
93
|
+
Depth must be an integer from 2 through 6. A nonnumeric word after bare `--deep`
|
|
94
|
+
is a positional screen ID; use `--deep=<value>` to diagnose a nonnumeric depth.
|
|
95
|
+
|
|
90
96
|
## Push codes
|
|
91
97
|
|
|
92
98
|
| Code | Meaning |
|
package/guides/himi-test.md
CHANGED
|
@@ -478,7 +478,7 @@ behavior. This instruction does not add an automatic suppression or retry gate t
|
|
|
478
478
|
| `himi test` | The whole loop. Hermetic data + hostile passes. Exit 1 on any error. |
|
|
479
479
|
| `--json` | Machine envelope — the surface an agent reads. |
|
|
480
480
|
| `--content <dir>` | The content package to crawl (default: cwd). |
|
|
481
|
-
| `--deep [n]` | BFS over action chains (depth 3; range 2–6). Sequence-only bugs. |
|
|
481
|
+
| `--deep [n]` | BFS over action chains (default depth 3; integer range 2–6). Both `--deep 4` and `--deep=4` select depth 4; bare `--deep home` keeps `home` as a screen ID. To target a numeric screen ID, disambiguate with `--deep=3 4`. Sequence-only bugs. |
|
|
482
482
|
| `--record` | Refresh `dev/net-mocks.json` from live reads. QA site, read-path-only. |
|
|
483
483
|
| `--offline` | Strip every data layer — see the failure UI head-on. (Excludes `--net`.) |
|
|
484
484
|
| `--no-hostile` | Skip the empty-list / all-500 passes. |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wix/himalaya-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1608.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": [
|
|
@@ -72,5 +72,5 @@
|
|
|
72
72
|
"artifactId": "himalaya-cli"
|
|
73
73
|
}
|
|
74
74
|
},
|
|
75
|
-
"falconPackageHash": "
|
|
75
|
+
"falconPackageHash": "1bec846ad5466a0b26a35a61f3e2e514b5c39c2f5376641b9ae23195"
|
|
76
76
|
}
|