@wix/himalaya-cli 0.1060.0 → 0.1061.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.
@@ -90,18 +90,25 @@ export interface NavigationConfig {
90
90
  * offline dev seam to a REAL Wix backend call — routed through `wixApi`
91
91
  * (WixApiCapability), so it is auto-covered by the dev-mode Wix gateway /
92
92
  * admin inspector. Members absent / false keep the seam, so unregistered members
93
- * and non-Wix apps are unaffected. `bi`/`experiments` carry the
94
- * registration-specific params (Frog src/endpoint+variant, Petri scope).
95
- * Best-effort: Frog/Petri/Ping/Jot may 4xx until a Wix App is registered — the
96
- * gateway records those real errors, which is itself useful production data. */
93
+ * and non-Wix apps are unaffected. `bi` carries the registration-specific
94
+ * params (Frog src/endpoint+variant).
95
+ * Best-effort: Frog may 4xx until a Wix App is registered — the gateway records
96
+ * those real errors, which is itself useful production data. */
97
97
  export interface WixPlatformConfig {
98
98
  /** Which cross-cutting members make REAL Wix calls (vs the offline seam). */
99
99
  real?: {
100
100
  bi?: boolean;
101
+ /** No effect: experiments and flags come from the app's served flags
102
+ * (`/v1/flags/<app>/assignments`), never Wix Petri. Kept so existing configs type-check. */
101
103
  experiments?: boolean;
104
+ /** No effect — see `experiments`. */
102
105
  flags?: boolean;
106
+ /** No effect: the translations-server lookup, Ping registration and the Jot deferred link
107
+ * have no route on any Wix host a himi app reaches, so they always use the seam. */
103
108
  i18n?: boolean;
109
+ /** No effect — see `i18n`. */
104
110
  ping?: boolean;
111
+ /** No effect — see `i18n`. */
105
112
  deeplink?: boolean;
106
113
  session?: boolean;
107
114
  auth?: boolean;
@@ -41,7 +41,9 @@ export declare const flags: {
41
41
  };
42
42
  export declare const i18n: {
43
43
  /** Resolve a translation key for the current locale; `fallback` (or the key)
44
- * when unknown. */
44
+ * when unknown. Always the native seam: `/_api/translations-server/v1/translation/<key>`
45
+ * has no route on any Wix host a himi app reaches (the same 404 as a made-up path, with or
46
+ * without a token), so `real.i18n` no longer sends it anywhere — it only ever 404ed. */
45
47
  t(key: string, fallback?: string): Promise<string>;
46
48
  /** Current resolved UI locale (2-letter). */
47
49
  locale(): Promise<string>;
@@ -125,15 +125,10 @@ var flags = {
125
125
  };
126
126
  var i18n = {
127
127
  /** Resolve a translation key for the current locale; `fallback` (or the key)
128
- * when unknown. */
128
+ * when unknown. Always the native seam: `/_api/translations-server/v1/translation/<key>`
129
+ * has no route on any Wix host a himi app reaches (the same 404 as a made-up path, with or
130
+ * without a token), so `real.i18n` no longer sends it anywhere — it only ever 404ed. */
129
131
  async t(key, fallback) {
130
- if (isMemberReal("i18n")) {
131
- try {
132
- const r2 = await realWix("GET", `/_api/translations-server/v1/translation/${encodeURIComponent(key)}`);
133
- if (typeof r2?.translation === "string") return r2.translation;
134
- } catch {
135
- }
136
- }
137
132
  const r = await call("i18nTranslate", { key, fallback: fallback ?? key });
138
133
  return r?.value ?? fallback ?? key;
139
134
  },
package/dist/cli.mjs CHANGED
@@ -6684,6 +6684,7 @@ function resolveTranslation(value, catalog, sourceCatalog) {
6684
6684
  var BINDING_SIGILS, BINDING_SIGIL_RE, TRANSLATION_PREFIX, TRANSLATION_KEY_RE;
6685
6685
  var init_bindings = __esm({
6686
6686
  "../../core/ts/src/bindings.ts"() {
6687
+ "use strict";
6687
6688
  BINDING_SIGILS = ["service", "flag", "item", "t"];
6688
6689
  BINDING_SIGIL_RE = new RegExp(
6689
6690
  `^\\$(?:${BINDING_SIGILS.filter((s) => s !== "t").join("|")})\\b|^\\$t:`
@@ -3475,7 +3475,7 @@
3475
3475
  "name": "i18n",
3476
3476
  "kind": "const",
3477
3477
  "jsdoc": "",
3478
- "decl": "export const i18n = {\n /** Resolve a translation key for the current locale; `fallback` (or the key)\n * when unknown. */\n async t(key: string, fallback?: string): Promise<string> {\n if (isMemberReal(\"i18n\")) {\n try {\n const r = await realWix<{ translation?: string }>(\"GET\", `/_api/translations-server/v1/translation/${encodeURIComponent(key)}`);\n if (typeof r?.translation === \"string\") return r.translation;\n } catch { /* fall through to the dev seam */ }\n }\n const r = await call<{ value?: string }>(\"i18nTranslate\", { key, fallback: fallback ?? key });\n return r?.value ?? fallback ?? key;\n },\n /** Current resolved UI locale (2-letter). */\n async locale(): Promise<string> {\n const r = await call<{ locale?: string }>(\"i18nLocale\");\n return r?.locale ?? \"en\";\n },\n};"
3478
+ "decl": "export const i18n = {\n /** Resolve a translation key for the current locale; `fallback` (or the key)\n * when unknown. Always the native seam: `/_api/translations-server/v1/translation/<key>`\n * has no route on any Wix host a himi app reaches (the same 404 as a made-up path, with or\n * without a token), so `real.i18n` no longer sends it anywhere — it only ever 404ed. */\n async t(key: string, fallback?: string): Promise<string> {\n const r = await call<{ value?: string }>(\"i18nTranslate\", { key, fallback: fallback ?? key });\n return r?.value ?? fallback ?? key;\n },\n /** Current resolved UI locale (2-letter). */\n async locale(): Promise<string> {\n const r = await call<{ locale?: string }>(\"i18nLocale\");\n return r?.locale ?? \"en\";\n },\n};"
3479
3479
  },
3480
3480
  {
3481
3481
  "name": "PingRegistration",
@@ -4,9 +4,10 @@
4
4
  **platform-agnostic** — the same JS runs on iOS, Android, macOS and web, with **one documented
5
5
  exception**: on web, `auth.signIn()` rejects rather than resolving (see
6
6
  [Real vs dev seam](#real-vs-dev-seam-and-best-effort) below). Each
7
- member dispatches to the native `wix_platform` capability (with an on-device dev seam),
8
- and REST-shaped members go to real Wix when the app enables them
9
- ([opt-in guide](wix-platform-opt-in.md)). This is the authoritative reference for
7
+ member dispatches to the native `wix_platform` capability (with an on-device dev seam);
8
+ `bi`, `monitoring`, `session` and `auth` take their real backend when the app enables them
9
+ ([opt-in guide](wix-platform-opt-in.md)), while `experiments` / `flags` always read the app's
10
+ served flags and `i18n`, `ping` and `deeplink` always answer from the seam. This is the authoritative reference for
10
11
  *calling* the members; source of truth is `core/sdk/wix-platform/src/index.ts` +
11
12
  [RFC 0042](../core/schema/RFC/0042-wix-platform-sdk.md).
12
13
 
@@ -63,12 +64,16 @@ await monitoring.captureError("thing failed", { code: "E1" });
63
64
 
64
65
  - With no `wixPlatform.real.<member>`, a member returns the **dev seam** (deterministic
65
66
  on-device value; no network). `isMemberReal(member)` reflects the flag.
66
- - With `real.<member> = true`, REST-shaped members route through the real `wixApi`
67
- chokepoint. These are **best-effort**: a 4xx (expected until a Wix App is registered)
68
- falls back to the seam value AND still emits the member's telemetry
69
- (`experiment_exposed` / `ping_registered` / `deferred_deeplink_resolved` / …), so
70
- feature-gating + attribution stay correct either way. Every method returns a resolved
71
- value (or `null`) — never throws on a Wix error — so a worker never crashes on the SDK.
67
+ - With `real.<member> = true`, the one REST-shaped member that still has a reachable Wix
68
+ route takes it: `auth.signedInstance` mints through the real `wixApi` chokepoint. That is
69
+ **best-effort**: a failure falls back to the seam value, so feature-gating stays correct
70
+ either way. Every method returns a resolved value (or `null`) — never throws on a Wix
71
+ error — so a worker never crashes on the SDK.
72
+ - `real` does nothing for the rest. `experiments` / `flags` always answer from the app's
73
+ served flags (`GET /v1/flags/<app>/assignments`, set with `himi flags`), never Wix Petri;
74
+ `i18n`, `ping` and `deeplink` have no Wix route a himi app can reach (a 404 with or without
75
+ a token), so they always answer from the seam and `real.i18n` / `real.ping` /
76
+ `real.deeplink` are ignored.
72
77
  - `bi`, `monitoring`, and `auth` route through their native backends (Frog sink, Sentry
73
78
  sink, `WixNativeAuthProvider`) rather than raw `wixApi`, but the calling contract is
74
79
  identical — **except `auth.signIn()` on web**, below.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/himalaya-cli",
3
- "version": "0.1060.0",
3
+ "version": "0.1061.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": [
@@ -65,5 +65,5 @@
65
65
  "artifactId": "himalaya-cli"
66
66
  }
67
67
  },
68
- "falconPackageHash": "f9ba6be1e80fee7d23674790f7aef4a825cdf2e6dae560ef48f1c744"
68
+ "falconPackageHash": "b243ee9fc8a6a890b9210aa28588552b0722079d8481a0e61fb76869"
69
69
  }