@wix/himalaya-cli 0.1013.0 → 0.1014.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.
Files changed (2) hide show
  1. package/dist/cli.mjs +35 -19
  2. package/package.json +2 -2
package/dist/cli.mjs CHANGED
@@ -45887,6 +45887,29 @@ var init_assets = __esm({
45887
45887
  }
45888
45888
  });
45889
45889
 
45890
+ // ../../core/serve-runtime/src/pinned-read.ts
45891
+ async function checkPinnedRead(input) {
45892
+ const { secret, token, app, releaseId, screenId, authorizePreview } = input;
45893
+ if (!secret) return authorizePreview ? { status: 503, body: { error: "preview_token_unavailable" } } : null;
45894
+ if (!token) return await input.isLive() ? null : { status: 401, body: { error: "preview_token_required", app, releaseId } };
45895
+ const verified = await verifyPreviewToken({ token, secret, app, releaseId, screenId });
45896
+ if (verified.ok) {
45897
+ if (authorizePreview ? !await authorizePreview(verified.claims) : !!verified.claims.siteLease) {
45898
+ return { status: 403, body: { error: "site_preview_forbidden" } };
45899
+ }
45900
+ return null;
45901
+ }
45902
+ return {
45903
+ status: verified.error === "scope_mismatch" ? 403 : 401,
45904
+ body: { error: `preview_token_${verified.error}`, app, releaseId, ...screenId ? { screenId } : {} }
45905
+ };
45906
+ }
45907
+ var init_pinned_read = __esm({
45908
+ "../../core/serve-runtime/src/pinned-read.ts"() {
45909
+ init_preview_token();
45910
+ }
45911
+ });
45912
+
45890
45913
  // ../../core/serve-runtime/package-share.ts
45891
45914
  function parseStored(bytes2, id) {
45892
45915
  if (!bytes2) return null;
@@ -46222,23 +46245,16 @@ ${releaseId}`;
46222
46245
  return new Response(body, { status: 200, headers: { "content-type": JSON_CT, etag, "cache-control": cache, ...vary } });
46223
46246
  }
46224
46247
  async function authorizePinnedRead(request, url, app, releaseId, screenId) {
46225
- const secret = opts.previewTokenSecret;
46226
- if (!secret) return opts.authorizePreview ? json3(503, { error: "preview_token_unavailable" }) : null;
46227
- const token = resolvePreviewToken(request, url);
46228
- const live2 = await manifest(app);
46229
- const isLive = live2?.releaseId === releaseId;
46230
- if (!token) return isLive ? null : json3(401, { error: "preview_token_required", app, releaseId });
46231
- const verified = await verifyPreviewToken({ token, secret, app, releaseId, screenId });
46232
- if (verified.ok) {
46233
- if (opts.authorizePreview ? !await opts.authorizePreview(verified.claims) : !!verified.claims.siteLease) return json3(403, { error: "site_preview_forbidden" });
46234
- return null;
46235
- }
46236
- return json3(verified.error === "scope_mismatch" ? 403 : 401, {
46237
- error: `preview_token_${verified.error}`,
46248
+ const denied = await checkPinnedRead({
46249
+ secret: opts.previewTokenSecret,
46250
+ token: resolvePreviewToken(request, url),
46238
46251
  app,
46239
46252
  releaseId,
46240
- ...screenId ? { screenId } : {}
46253
+ screenId,
46254
+ isLive: async () => (await manifest(app))?.releaseId === releaseId,
46255
+ authorizePreview: opts.authorizePreview
46241
46256
  });
46257
+ return denied && json3(denied.status, denied.body);
46242
46258
  }
46243
46259
  const corsHeaders = (request) => {
46244
46260
  const origin = request.headers.get("origin");
@@ -46669,6 +46685,10 @@ ${releaseId}`;
46669
46685
  const cfgMatch = /^\/v1\/app-config\/([^/]+)$/.exec(path2);
46670
46686
  const app = cfgMatch?.[1] ?? resolveApp(request, url);
46671
46687
  const pin = resolvePin(request, url);
46688
+ if (app && pin) {
46689
+ const denied = await authorizePinnedRead(request, url, app, pin);
46690
+ if (denied) return denied;
46691
+ }
46672
46692
  if (path2 === "/v1/template-source") {
46673
46693
  if (!app) return json3(400, { error: "missing_app" });
46674
46694
  if (!store.getSource) return json3(501, { error: "templates_unsupported" });
@@ -46685,10 +46705,6 @@ ${releaseId}`;
46685
46705
  headers: { "content-type": JSON_CT, etag, "cache-control": DOC_CACHE_CONTROL, "x-himalaya-app": app }
46686
46706
  });
46687
46707
  }
46688
- if (app && pin) {
46689
- const denied = await authorizePinnedRead(request, url, app, pin);
46690
- if (denied) return denied;
46691
- }
46692
46708
  if (path2 === "/v1/authoring-docs" || /^\/v1\/authoring-docs\/(spec|mobile-ux)$/.test(path2)) {
46693
46709
  if (!app) return json3(400, { error: "missing_app" });
46694
46710
  const m = pin ? await pinnedManifest(app, pin) : await manifest(app);
@@ -47008,7 +47024,7 @@ var init_server = __esm({
47008
47024
  init_store();
47009
47025
  init_base64();
47010
47026
  init_contract();
47011
- init_preview_token();
47027
+ init_pinned_read();
47012
47028
  init_package_share();
47013
47029
  init_wix_bridge();
47014
47030
  init_wix_member_auth();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wix/himalaya-cli",
3
- "version": "0.1013.0",
3
+ "version": "0.1014.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": "997481e9652da3d8aedd016c711987997556982fd0ac900d13dbc194"
68
+ "falconPackageHash": "18405dc60f540308524da075bbb12c054da8e06b44e0fcdabaf2e2b0"
69
69
  }