@wix/himalaya-cli 0.1420.0 → 0.1422.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.
@@ -824,7 +824,7 @@ export interface TelemetrySink {
824
824
  * integration; Phase A reserves the names so apps configuring telemetry sinks
825
825
  * before the engine lands can prepare matching schemas without later churn.
826
826
  */
827
- export type KnownTelemetryEventType = "screen_view" | "action_dispatched" | "action_completed" | "action_failed" | "cache_layer_miss" | "toggles_applied" | "unknown_component_fallback" | "bridge_call_denied" | "bridge_dispatch" | "bridge_wix_call" | "worker_boot_started" | "worker_boot_completed" | "worker_crashed" | "worker_console" | "bundle_load_failed" | "bundle_load_revoked" | "app_launched" | "app_foreground" | "app_background" | "launch_time" | "screen_load" | "network_request" | "app_crashed" | "error_logged" | "experiment_exposed" | "flag_evaluated";
827
+ export type KnownTelemetryEventType = "screen_view" | "action_dispatched" | "action_completed" | "action_failed" | "cache_layer_miss" | "toggles_applied" | "unknown_component_fallback" | "bridge_call_denied" | "bridge_dispatch" | "bridge_wix_call" | "worker_boot_started" | "worker_boot_completed" | "worker_crashed" | "worker_console" | "bundle_load_failed" | "bundle_load_revoked" | "descriptor_decode_failed" | "descriptor_decode_degraded" | "app_launched" | "app_foreground" | "app_background" | "launch_time" | "screen_load" | "network_request" | "app_crashed" | "error_logged" | "experiment_exposed" | "flag_evaluated";
828
828
  export interface TelemetryEvent {
829
829
  /**
830
830
  * Platform-mandated taxonomy, per invariant 23. Use [KnownTelemetryEventType]
package/dist/cli.mjs CHANGED
@@ -7715,7 +7715,6 @@ function resolveTranslation(value, catalog3, sourceCatalog) {
7715
7715
  var BINDING_SIGILS, BINDING_SIGIL_RE, TRANSLATION_PREFIX, TRANSLATION_KEY_RE;
7716
7716
  var init_bindings = __esm({
7717
7717
  "../../core/ts/src/bindings.ts"() {
7718
- "use strict";
7719
7718
  BINDING_SIGILS = ["service", "flag", "item", "t"];
7720
7719
  BINDING_SIGIL_RE = new RegExp(
7721
7720
  `^\\$(?:${BINDING_SIGILS.filter((s2) => s2 !== "t").join("|")})\\b|^\\$t:`
@@ -9002,6 +9001,81 @@ var init_token_suggest = __esm({
9002
9001
  }
9003
9002
  });
9004
9003
 
9004
+ // ../worker-globals/allowlist.ts
9005
+ var ES2020_GLOBALS, IMPLICIT_BINDINGS, WORKER_SURFACE, WORKER_ALLOWLIST;
9006
+ var init_allowlist = __esm({
9007
+ "../worker-globals/allowlist.ts"() {
9008
+ ES2020_GLOBALS = [
9009
+ // value properties
9010
+ "globalThis",
9011
+ "undefined",
9012
+ "NaN",
9013
+ "Infinity",
9014
+ // function properties
9015
+ "parseInt",
9016
+ "parseFloat",
9017
+ "isNaN",
9018
+ "isFinite",
9019
+ "encodeURI",
9020
+ "encodeURIComponent",
9021
+ "decodeURI",
9022
+ "decodeURIComponent",
9023
+ // fundamental objects
9024
+ "Object",
9025
+ "Function",
9026
+ "Boolean",
9027
+ "Symbol",
9028
+ // errors
9029
+ "Error",
9030
+ "EvalError",
9031
+ "RangeError",
9032
+ "ReferenceError",
9033
+ "SyntaxError",
9034
+ "TypeError",
9035
+ "URIError",
9036
+ // numbers, dates, text
9037
+ "Number",
9038
+ "BigInt",
9039
+ "Math",
9040
+ "Date",
9041
+ "String",
9042
+ "RegExp",
9043
+ // indexed / keyed collections
9044
+ "Array",
9045
+ "Map",
9046
+ "Set",
9047
+ "WeakMap",
9048
+ "WeakSet",
9049
+ // binary data
9050
+ "ArrayBuffer",
9051
+ "DataView",
9052
+ "Int8Array",
9053
+ "Uint8Array",
9054
+ "Uint8ClampedArray",
9055
+ "Int16Array",
9056
+ "Uint16Array",
9057
+ "Int32Array",
9058
+ "Uint32Array",
9059
+ "Float32Array",
9060
+ "Float64Array",
9061
+ "BigInt64Array",
9062
+ "BigUint64Array",
9063
+ // structured data, control abstraction, reflection
9064
+ "JSON",
9065
+ "Promise",
9066
+ "Reflect",
9067
+ "Proxy"
9068
+ ];
9069
+ IMPLICIT_BINDINGS = ["arguments"];
9070
+ WORKER_SURFACE = ["himalaya", "console"];
9071
+ WORKER_ALLOWLIST = /* @__PURE__ */ new Set([
9072
+ ...ES2020_GLOBALS,
9073
+ ...IMPLICIT_BINDINGS,
9074
+ ...WORKER_SURFACE
9075
+ ]);
9076
+ }
9077
+ });
9078
+
9005
9079
  // ../../core/dev-server/src/l10n-strings.ts
9006
9080
  function isUserVisibleCopy(s2) {
9007
9081
  return isCopyShaped(s2) && /[A-Za-z֐-׿؀-ۿ]/.test(s2);
@@ -10091,6 +10165,19 @@ var init_rich_content = __esm({
10091
10165
  }
10092
10166
  });
10093
10167
 
10168
+ // ../../core/dev-server/src/realm-parity.ts
10169
+ function withheldGlobalsSource(hide) {
10170
+ if (!hide?.length) return "";
10171
+ return `${JSON.stringify(hide)}.forEach(function (n) { try { delete globalThis[n]; } catch (e) { /* non-configurable: leave it */ } });`;
10172
+ }
10173
+ function realmInstallsIntl(intl, hide) {
10174
+ return intl === true && !(hide ?? []).includes("Intl");
10175
+ }
10176
+ var init_realm_parity = __esm({
10177
+ "../../core/dev-server/src/realm-parity.ts"() {
10178
+ }
10179
+ });
10180
+
10094
10181
  // ../../core/dev-server/src/validate-descriptor.core.ts
10095
10182
  var validate_descriptor_core_exports = {};
10096
10183
  __export(validate_descriptor_core_exports, {
@@ -10098,7 +10185,9 @@ __export(validate_descriptor_core_exports, {
10098
10185
  CRAWL_BLOCKING_PASSES: () => CRAWL_BLOCKING_PASSES,
10099
10186
  DESCRIPTOR_DEPTH_BUDGETS: () => DESCRIPTOR_DEPTH_BUDGETS,
10100
10187
  DEVICE_NETWORK_WITHHELD: () => DEVICE_NETWORK_WITHHELD,
10188
+ DEVICE_PARITY_CANDIDATES: () => DEVICE_PARITY_CANDIDATES,
10101
10189
  DEVICE_PARITY_WITHHELD: () => DEVICE_PARITY_WITHHELD,
10190
+ DEVICE_STRIPPED_HOST_GLOBALS: () => DEVICE_STRIPPED_HOST_GLOBALS,
10102
10191
  DEVICE_WITHHELD: () => DEVICE_WITHHELD,
10103
10192
  EMBEDDED_BINDING: () => EMBEDDED_BINDING,
10104
10193
  INTEGER_MODIFIERS: () => INTEGER_MODIFIERS,
@@ -10123,6 +10212,7 @@ __export(validate_descriptor_core_exports, {
10123
10212
  componentPropFindings: () => componentPropFindings,
10124
10213
  depthBudgetFindings: () => depthBudgetFindings,
10125
10214
  depthBudgetIssues: () => depthBudgetIssues,
10215
+ deviceParityWithheldFrom: () => deviceParityWithheldFrom,
10126
10216
  dryRunBundle: () => dryRunBundle,
10127
10217
  enumFieldNames: () => enumFieldNames,
10128
10218
  extractBundleContract: () => extractBundleContract,
@@ -10139,6 +10229,7 @@ __export(validate_descriptor_core_exports, {
10139
10229
  pathCrossesOpaqueAuthorJson: () => pathCrossesOpaqueAuthorJson,
10140
10230
  pathValue: () => pathValue,
10141
10231
  pinnedIntrinsicsSource: () => pinnedIntrinsicsSource,
10232
+ realmInstallsIntl: () => realmInstallsIntl,
10142
10233
  resolveActionEvaluator: () => resolveActionEvaluator,
10143
10234
  resolveBootEvaluator: () => resolveBootEvaluator,
10144
10235
  resolveEvaluator: () => resolveEvaluator,
@@ -10148,6 +10239,7 @@ __export(validate_descriptor_core_exports, {
10148
10239
  setDefaultEvaluator: () => setDefaultEvaluator,
10149
10240
  topBarFindings: () => topBarFindings,
10150
10241
  validateScreenDescriptor: () => validateScreenDescriptor,
10242
+ withheldGlobalsSource: () => withheldGlobalsSource,
10151
10243
  workerSubtreeAllowed: () => workerSubtreeAllowed
10152
10244
  });
10153
10245
  function makeInert() {
@@ -10324,6 +10416,15 @@ function nondeterministicServices(bundleJs, opts = {}) {
10324
10416
  if (threw > 0) return names.sort();
10325
10417
  return names.filter((name) => safeStringify(a2[name]) !== safeStringify(b2[name])).sort();
10326
10418
  }
10419
+ function deviceParityWithheldFrom(root) {
10420
+ const names = new Set(DEVICE_PARITY_CANDIDATES);
10421
+ for (let o2 = root; o2 && o2 !== Object.prototype; o2 = Object.getPrototypeOf(o2)) {
10422
+ for (const name of Object.getOwnPropertyNames(o2)) names.add(name);
10423
+ }
10424
+ names.delete("constructor");
10425
+ names.delete("__proto__");
10426
+ return [...names].filter((name) => /^[A-Za-z_$][\w$]*$/.test(name) && !WORKER_ALLOWLIST.has(name)).sort();
10427
+ }
10327
10428
  function setDefaultEvaluator(evaluator) {
10328
10429
  defaultEvaluator = evaluator;
10329
10430
  }
@@ -10530,7 +10631,7 @@ async function bootBundleWorker(bundleJs, opts) {
10530
10631
  let guestActions;
10531
10632
  let guestSession;
10532
10633
  try {
10533
- const hide = opts.deviceParity ? DEVICE_WITHHELD : void 0;
10634
+ const hide = opts.deviceParity ? DEVICE_PARITY_WITHHELD : void 0;
10534
10635
  if (realm.runWithActions) {
10535
10636
  const ran = await realm.runWithActions(bundleJs, sandbox, {
10536
10637
  timeoutMs: 2e3 + budgetMs,
@@ -12473,13 +12574,14 @@ function validateScreenDescriptor(screenId, descriptor, opts = {}) {
12473
12574
  services: Object.keys(services)
12474
12575
  };
12475
12576
  }
12476
- var CRAWL_BLOCKING_PASSES, BOOT_EVAL_TIMEOUT_MS, DRIFT_PROBES, DEVICE_PARITY_WITHHELD, DEVICE_NETWORK_WITHHELD, DEVICE_WITHHELD, defaultEvaluator, bootEvaluator, actionEvaluator, NATIVE_PROP_ENUMS, KNOWN_PROPS, IN_ARRAY_BINDING_PROPS, SERVICE_SIGIL, INTEGER_PROPS, NATIVE_REQUIRED_PROPS, bareNestedClass, NATIVE_NESTED_CLASSES, NATIVE_MODIFIERS_CLASS, NATIVE_DESCRIPTOR_CLASS, NATIVE_DESCRIPTOR_NESTED, NATIVE_NESTED_PROPS, LENIENT_TOP_BAR_BLOCKS, MODIFIER_KEYS, INTEGER_MODIFIERS, MODIFIER_KINDS, SCHEMA_SCORED_NODES, CORE_PACKAGES, LEGACY_UNSCORED_KEYS, DYNAMIC_PLACEHOLDER, LITERAL_ONLY_PROPS, SERVICE_ONLY_BINDING_PROPS, WHOLE_VALUE_BINDING, EMBEDDED_BINDING, OPTIONS_BINDING_PROPS, EDITOR_SERVICE_NAME, SHEET_PLACEMENTS, DESCRIPTOR_DEPTH_BUDGETS, UNSAFE_TO_RECURSE_DEPTH, ROW_TEMPLATE_HOST_TYPES, TOP_BAR_TRAILING_LIMIT, TOP_BAR_NON_TRAILING, BUTTON_STYLES, EMPTY_STATE_ACTION_STYLES, EMPTY_STATE_ACTION_SIZES;
12577
+ var CRAWL_BLOCKING_PASSES, BOOT_EVAL_TIMEOUT_MS, DRIFT_PROBES, DEVICE_NETWORK_WITHHELD, DEVICE_STRIPPED_HOST_GLOBALS, DEVICE_WITHHELD, DEVICE_PARITY_CANDIDATES, DEVICE_PARITY_WITHHELD, defaultEvaluator, bootEvaluator, actionEvaluator, NATIVE_PROP_ENUMS, KNOWN_PROPS, IN_ARRAY_BINDING_PROPS, SERVICE_SIGIL, INTEGER_PROPS, NATIVE_REQUIRED_PROPS, bareNestedClass, NATIVE_NESTED_CLASSES, NATIVE_MODIFIERS_CLASS, NATIVE_DESCRIPTOR_CLASS, NATIVE_DESCRIPTOR_NESTED, NATIVE_NESTED_PROPS, LENIENT_TOP_BAR_BLOCKS, MODIFIER_KEYS, INTEGER_MODIFIERS, MODIFIER_KINDS, SCHEMA_SCORED_NODES, CORE_PACKAGES, LEGACY_UNSCORED_KEYS, DYNAMIC_PLACEHOLDER, LITERAL_ONLY_PROPS, SERVICE_ONLY_BINDING_PROPS, WHOLE_VALUE_BINDING, EMBEDDED_BINDING, OPTIONS_BINDING_PROPS, EDITOR_SERVICE_NAME, SHEET_PLACEMENTS, DESCRIPTOR_DEPTH_BUDGETS, UNSAFE_TO_RECURSE_DEPTH, ROW_TEMPLATE_HOST_TYPES, TOP_BAR_TRAILING_LIMIT, TOP_BAR_NON_TRAILING, BUTTON_STYLES, EMPTY_STATE_ACTION_STYLES, EMPTY_STATE_ACTION_SIZES;
12477
12578
  var init_validate_descriptor_core = __esm({
12478
12579
  "../../core/dev-server/src/validate-descriptor.core.ts"() {
12479
12580
  init_validator();
12480
12581
  init_validator();
12481
12582
  init_tokens();
12482
12583
  init_token_suggest();
12584
+ init_allowlist();
12483
12585
  init_l10n_strings();
12484
12586
  init_a11y_contract();
12485
12587
  init_bindings();
@@ -12488,6 +12590,7 @@ var init_validate_descriptor_core = __esm({
12488
12590
  init_frame_limits();
12489
12591
  init_rich_content();
12490
12592
  init_worker_subtree();
12593
+ init_realm_parity();
12491
12594
  CRAWL_BLOCKING_PASSES = /* @__PURE__ */ new Set([
12492
12595
  // A screen whose bindings do not resolve has no state to crawl.
12493
12596
  "bindings",
@@ -12508,17 +12611,6 @@ var init_validate_descriptor_core = __esm({
12508
12611
  { clock: Date.UTC(2021, 7, 28, 19, 35, 57, 789), seed: 1, mirrorRandom: true }
12509
12612
  // a Saturday or Sunday, the 28th/29th
12510
12613
  ];
12511
- DEVICE_PARITY_WITHHELD = [
12512
- "setTimeout",
12513
- "clearTimeout",
12514
- "setInterval",
12515
- "clearInterval",
12516
- "URL",
12517
- "URLSearchParams",
12518
- "TextEncoder",
12519
- "TextDecoder",
12520
- "AbortController"
12521
- ];
12522
12614
  DEVICE_NETWORK_WITHHELD = [
12523
12615
  "fetch",
12524
12616
  "XMLHttpRequest",
@@ -12537,7 +12629,45 @@ var init_validate_descriptor_core = __esm({
12537
12629
  "Response",
12538
12630
  "Headers"
12539
12631
  ];
12540
- DEVICE_WITHHELD = [...DEVICE_NETWORK_WITHHELD, ...DEVICE_PARITY_WITHHELD];
12632
+ DEVICE_STRIPPED_HOST_GLOBALS = [
12633
+ "setTimeout",
12634
+ "clearTimeout",
12635
+ "setInterval",
12636
+ "clearInterval",
12637
+ "URL",
12638
+ "URLSearchParams",
12639
+ "TextEncoder",
12640
+ "TextDecoder",
12641
+ "AbortController",
12642
+ "webkitURL"
12643
+ ];
12644
+ DEVICE_WITHHELD = [...DEVICE_NETWORK_WITHHELD, ...DEVICE_STRIPPED_HOST_GLOBALS];
12645
+ DEVICE_PARITY_CANDIDATES = [
12646
+ ...DEVICE_WITHHELD,
12647
+ // Host APIs and post-ES2020 / non-portable intrinsics an engine may carry natively (QuickJS-ng 0.15
12648
+ // installs `performance` and `queueMicrotask`), named so a host realm without them still withholds them.
12649
+ "atob",
12650
+ "btoa",
12651
+ "structuredClone",
12652
+ "queueMicrotask",
12653
+ "crypto",
12654
+ "performance",
12655
+ "navigator",
12656
+ "self",
12657
+ "window",
12658
+ "Intl",
12659
+ "WeakRef",
12660
+ "FinalizationRegistry",
12661
+ "AggregateError",
12662
+ "InternalError",
12663
+ "SharedArrayBuffer",
12664
+ "Atomics",
12665
+ "WebAssembly",
12666
+ "eval",
12667
+ "escape",
12668
+ "unescape"
12669
+ ];
12670
+ DEVICE_PARITY_WITHHELD = deviceParityWithheldFrom(globalThis);
12541
12671
  defaultEvaluator = null;
12542
12672
  bootEvaluator = null;
12543
12673
  actionEvaluator = null;
@@ -14022,7 +14152,9 @@ __export(validate_descriptor_exports, {
14022
14152
  CRAWL_BLOCKING_PASSES: () => CRAWL_BLOCKING_PASSES,
14023
14153
  DESCRIPTOR_DEPTH_BUDGETS: () => DESCRIPTOR_DEPTH_BUDGETS,
14024
14154
  DEVICE_NETWORK_WITHHELD: () => DEVICE_NETWORK_WITHHELD,
14155
+ DEVICE_PARITY_CANDIDATES: () => DEVICE_PARITY_CANDIDATES,
14025
14156
  DEVICE_PARITY_WITHHELD: () => DEVICE_PARITY_WITHHELD,
14157
+ DEVICE_STRIPPED_HOST_GLOBALS: () => DEVICE_STRIPPED_HOST_GLOBALS,
14026
14158
  DEVICE_WITHHELD: () => DEVICE_WITHHELD,
14027
14159
  EMBEDDED_BINDING: () => EMBEDDED_BINDING,
14028
14160
  INTEGER_MODIFIERS: () => INTEGER_MODIFIERS,
@@ -14049,6 +14181,7 @@ __export(validate_descriptor_exports, {
14049
14181
  componentPropFindings: () => componentPropFindings,
14050
14182
  depthBudgetFindings: () => depthBudgetFindings,
14051
14183
  depthBudgetIssues: () => depthBudgetIssues,
14184
+ deviceParityWithheldFrom: () => deviceParityWithheldFrom,
14052
14185
  discoverNativeActions: () => discoverNativeActions,
14053
14186
  dryRunBundle: () => dryRunBundle,
14054
14187
  enumFieldNames: () => enumFieldNames,
@@ -14071,6 +14204,7 @@ __export(validate_descriptor_exports, {
14071
14204
  pinnedIntrinsicsSource: () => pinnedIntrinsicsSource,
14072
14205
  readBuiltBundle: () => readBuiltBundle,
14073
14206
  readBuiltBundleMap: () => readBuiltBundleMap,
14207
+ realmInstallsIntl: () => realmInstallsIntl,
14074
14208
  registeredActions: () => registeredActions,
14075
14209
  resolveActionEvaluator: () => resolveActionEvaluator,
14076
14210
  resolveBootEvaluator: () => resolveBootEvaluator,
@@ -14081,6 +14215,7 @@ __export(validate_descriptor_exports, {
14081
14215
  setDefaultEvaluator: () => setDefaultEvaluator,
14082
14216
  topBarFindings: () => topBarFindings,
14083
14217
  validateScreenDescriptor: () => validateScreenDescriptor,
14218
+ withheldGlobalsSource: () => withheldGlobalsSource,
14084
14219
  workerSubtreeAllowed: () => workerSubtreeAllowed
14085
14220
  });
14086
14221
  import { readFileSync as readFileSync15, existsSync as existsSync13, readdirSync as readdirSync11 } from "node:fs";
@@ -14177,10 +14312,13 @@ var init_validate_descriptor = __esm({
14177
14312
  "../../core/dev-server/src/validate-descriptor.ts"() {
14178
14313
  init_player_host_manifest();
14179
14314
  init_validate_descriptor_core();
14315
+ init_realm_parity();
14180
14316
  init_validate_descriptor_core();
14181
14317
  nodeVmEvaluator = {
14182
14318
  run(code, sandbox, opts) {
14183
14319
  const context = createContext(sandbox);
14320
+ const hideSource = withheldGlobalsSource((opts.hide ?? []).filter((name) => !(name in sandbox)));
14321
+ if (hideSource) runInContext(hideSource, context, { filename: "himi-hide.js" });
14184
14322
  const pins = pinnedIntrinsicsSource(opts);
14185
14323
  if (pins) {
14186
14324
  const pinned = runInContext(`(${pins})(Date, Math)`, context, { timeout: opts.timeoutMs, filename: "himi-pins.js" });
@@ -16318,6 +16456,9 @@ ${opts.clock === void 0 ? "" : opts.freezeDate ? ` globalThis.Date = (${pinnedI
16318
16456
  return sweepPromise;
16319
16457
  },
16320
16458
  });` : ""}
16459
+ // LAST, so nothing the prelude installed (the \`fetch\` stub) or the engine carries natively
16460
+ // (QuickJS-ng 0.15's \`performance\`, \`queueMicrotask\`) survives deviceParity (#4511).
16461
+ ${withheldGlobalsSource(opts.hide)}
16321
16462
  return ${opts.liveTransport ? "{ readback: readback, dispatch: dispatchAction, actions: readActions }" : "readback"};
16322
16463
  })();
16323
16464
  `;
@@ -16398,14 +16539,7 @@ async function createQuickJsEvaluator(options = {}) {
16398
16539
  }
16399
16540
  readback = pre.value;
16400
16541
  if ((options.webGlobals ?? options.intl) && !opts.hide?.length) installWebGlobals(ctx);
16401
- if (options.intl) {
16402
- if (opts.hide?.length) {
16403
- throw new Error(
16404
- "quickjs: `intl: true` and deviceParity are contradictory realms \u2014 deviceParity models the wrist (no timers, no Intl) and `intl` models the host. Pick one: an evaluator without `intl` for the device-floor crawl, or one with it for containment."
16405
- );
16406
- }
16407
- installIntl(ctx);
16408
- }
16542
+ if (realmInstallsIntl(options.intl, opts.hide)) installIntl(ctx);
16409
16543
  const res = ctx.evalCode(code, opts.filename);
16410
16544
  if (res.error) {
16411
16545
  const detail = ctx.dump(res.error);
@@ -16488,6 +16622,7 @@ var init_quickjs_evaluator = __esm({
16488
16622
  init_quickjs_intl();
16489
16623
  init_quickjs_state_codec();
16490
16624
  init_quickjs_web_globals();
16625
+ init_realm_parity();
16491
16626
  init_validate_descriptor_core();
16492
16627
  RECYCLE_AFTER_BLOWUPS = 1;
16493
16628
  DEFAULT_MEMORY_LIMIT_BYTES = 128 * 1024 * 1024;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/himalaya-cli",
3
- "version": "0.1420.0",
3
+ "version": "0.1422.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": [
@@ -71,5 +71,5 @@
71
71
  "artifactId": "himalaya-cli"
72
72
  }
73
73
  },
74
- "falconPackageHash": "d2a780fce1a8d60a36a6f5cf4f8860d5d454764049e49a0fa39c2885"
74
+ "falconPackageHash": "1e2ddc2aad76a7124c849d88d5862e6b66a03a169e9c066cea398548"
75
75
  }