@zlooks.cn/gateway-server 1.0.8 → 1.0.9

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 (52) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +2 -2
  3. package/.next/build-manifest.json +2 -2
  4. package/.next/prerender-manifest.json +3 -3
  5. package/.next/server/app/[pluginId]/[[...path]]/page.js +1 -1
  6. package/.next/server/app/[pluginId]/[[...path]]/page.js.nft.json +1 -1
  7. package/.next/server/app/[pluginId]/[[...path]]/page_client-reference-manifest.js +1 -1
  8. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  9. package/.next/server/app/_global-error.html +1 -1
  10. package/.next/server/app/_global-error.rsc +1 -1
  11. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  12. package/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  13. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  14. package/.next/server/app/_not-found/page.js +1 -1
  15. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  16. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  17. package/.next/server/app/favicon.ico/route.js +1 -1
  18. package/.next/server/app/favicon.ico/route.js.nft.json +1 -1
  19. package/.next/server/app/page.js +65 -65
  20. package/.next/server/app/page.js.nft.json +1 -1
  21. package/.next/server/app/page_client-reference-manifest.js +1 -1
  22. package/.next/server/app/robots.txt/route.js +1 -1
  23. package/.next/server/app/robots.txt/route.js.nft.json +1 -1
  24. package/.next/server/app-paths-manifest.json +2 -2
  25. package/.next/server/chunks/{748.js → 111.js} +5 -5
  26. package/.next/server/chunks/276.js +1 -1
  27. package/.next/server/chunks/448.js +1 -1
  28. package/.next/server/chunks/47.js +1 -0
  29. package/.next/server/chunks/551.js +2 -0
  30. package/.next/server/chunks/{486.js → 733.js} +3 -3
  31. package/.next/server/middleware-build-manifest.js +1 -1
  32. package/.next/server/pages/500.html +1 -1
  33. package/.next/server/server-reference-manifest.json +1 -1
  34. package/.next/static/chunks/{269-8aa7eb951aba0024.js → 195-d082e7c7c29748e6.js} +1 -1
  35. package/.next/static/chunks/300-f710e304736538be.js +1 -0
  36. package/.next/static/chunks/app/[pluginId]/[[...path]]/page-43d50eeb765492ea.js +1 -0
  37. package/.next/static/chunks/app/{layout-f0b86ab9dd5accbc.js → layout-f0bed6be746ab51e.js} +1 -1
  38. package/.next/static/chunks/app/page-951d4daaa72eacbe.js +1 -0
  39. package/.next/static/css/124beab9989d874a.css +1 -0
  40. package/.next/trace +22 -22
  41. package/.next/trace-build +1 -1
  42. package/dist/command/index.js +2 -6
  43. package/dist/command/index.js.map +1 -1
  44. package/package.json +14 -14
  45. package/.next/server/chunks/793.js +0 -2
  46. package/.next/server/chunks/872.js +0 -1
  47. package/.next/static/chunks/275-bddb27d29e7e51af.js +0 -1
  48. package/.next/static/chunks/app/[pluginId]/[[...path]]/page-30ed03df8541cd76.js +0 -1
  49. package/.next/static/chunks/app/page-fa81d6b33c269d0c.js +0 -1
  50. package/.next/static/css/5e1fe404799cdc12.css +0 -1
  51. /package/.next/static/{rwKTkmXmP-fXOvY9TPxU4 → 49ul1kLYWLjp7R9hn91mE}/_buildManifest.js +0 -0
  52. /package/.next/static/{rwKTkmXmP-fXOvY9TPxU4 → 49ul1kLYWLjp7R9hn91mE}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- exports.id=276,exports.ids=[276],exports.modules={5200:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(87984).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/evioshen/code/github/cevio/www.zlooks.cn/packages/gateway-server/src/app/rsc-client-runtime.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/evioshen/code/github/cevio/www.zlooks.cn/packages/gateway-server/src/app/rsc-client-runtime.tsx","default")},12265:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,95082,23)),Promise.resolve().then(c.t.bind(c,20125,23)),Promise.resolve().then(c.t.bind(c,13261,23)),Promise.resolve().then(c.t.bind(c,36804,23)),Promise.resolve().then(c.t.bind(c,76028,23)),Promise.resolve().then(c.t.bind(c,70168,23)),Promise.resolve().then(c.t.bind(c,82337,23)),Promise.resolve().then(c.bind(c,89352))},17322:(a,b,c)=>{"use strict";c.d(b,{o:()=>aI});var d=c(18509),e=c(50781),f=c(37714),g=c(62710),h=c(29951);let i="cn.zlooks.user.server",j=g.k5(["logout","user-request","family-limit","credential-recovery"]),k=g.Yj().refine(a=>a===a.trim().normalize("NFKC"),"Display name must be normalized").refine(a=>Array.from(a).length>=1&&Array.from(a).length<=160,"Display name must contain 1 to 160 Unicode code points"),l=g.Yj().refine(a=>a===a.trim().normalize("NFKC"),"Bio must be normalized").refine(a=>Array.from(a).length>=1&&Array.from(a).length<=500,"Bio must contain 1 to 500 Unicode code points"),m=g.OZ().max(2048).refine(a=>{let b=new URL(a).protocol;return"http:"===b||"https:"===b},"URL must use HTTP or HTTPS").refine(a=>a===new URL(a).toString(),"URL must be canonical"),n=g.Rp().max(320).refine(a=>a===a.toLocaleLowerCase("en-US"),"Email must be lowercase"),o=g.re({id:g.uR(),displayName:k.nullable(),avatar:m.nullable(),homepage:m.nullable(),bio:l.nullable(),email:n.nullable(),emailVerified:g.zM(),status:g.k5(["active","disabled","deleted"]),createdAt:h.w$({offset:!0}),updatedAt:h.w$({offset:!0}),version:g.ai().int().positive()}).superRefine((a,b)=>{a.emailVerified&&null===a.email&&b.addIssue({code:"custom",message:"A verified user snapshot must include its email",path:["email"]}),Date.parse(a.updatedAt)<Date.parse(a.createdAt)&&b.addIssue({code:"custom",message:"User updated time must not precede creation time",path:["updatedAt"]})}).readonly(),p=g.re({id:g.uR(),userId:g.uR(),createdAt:h.w$({offset:!0}),expiresAt:h.w$({offset:!0}),lastSeenAt:h.w$({offset:!0}),revokedAt:h.w$({offset:!0}).nullable(),revokeReason:j.nullable()}).superRefine((a,b)=>{let c=Date.parse(a.createdAt);null===a.revokedAt!=(null===a.revokeReason)&&b.addIssue({code:"custom",message:"Session revocation time and reason must be present together",path:["revokedAt"]}),Date.parse(a.expiresAt)<=c&&b.addIssue({code:"custom",message:"Session expiry must follow creation time",path:["expiresAt"]});let d=Date.parse(a.lastSeenAt);(d<c||d>Date.parse(a.expiresAt))&&b.addIssue({code:"custom",message:"Session last-seen time must fall within its lifetime",path:["lastSeenAt"]}),null!==a.revokedAt&&Date.parse(a.revokedAt)<c&&b.addIssue({code:"custom",message:"Session revoked time must not precede creation time",path:["revokedAt"]})}).readonly();var q=c(28621);let r=g.Yj().max(256).regex(/^[a-z][a-z0-9]*(?:\.[a-z][a-z0-9-]*)+\.v[1-9][0-9]*$/),s=g.Yj().max(256).regex(/^[a-z][a-z0-9]*(?:\.[a-z][a-z0-9]*)+$/),t=g.Yj().regex(/^[a-z][a-z0-9-]{0,63}$/),u=g.Yj().trim().min(1).max(256),v=g.Yj().max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/),w=g.Yj().max(128).regex(/^@zlooks\.cn\/[a-z0-9]+(?:-[a-z0-9]+)*$/),x=g.Yj().max(128).regex(/^[A-Za-z_$][A-Za-z0-9_$]*$/),y=g.Yj().trim().min(1).max(120),z=g.Yj().trim().min(1).max(1e3),A=g.Pq(),B=g.re({protocol:g.eu("zlooks.event"),protocolVersion:g.eu(1),eventId:g.uR(),type:r,producer:s,aggregate:g.re({type:t,id:u}).readonly(),occurredAt:h.w$({offset:!0}),data:A}).readonly();function C(a,b,c,d){return function(a,b,c){let d=r.parse(a),e=s.parse(c.producer),f=t.parse(c.aggregateType),g=c.aggregateId;if("function"!=typeof g)throw TypeError("Event aggregateId must be a function");return Object.freeze({type:d,producer:e,aggregateType:f,dataSchema:b,parse(a){let c,h=Object.freeze({...c=B.parse(a),aggregate:Object.freeze({...c.aggregate})});if(h.type!==d)throw TypeError(`Expected event type ${d}`);if(h.producer!==e)throw TypeError(`Expected event producer ${e}`);let i=b.parse(h.data);A.parse(i);let j=u.parse(g(i));if(h.aggregate.type!==f||h.aggregate.id!==j)throw TypeError(`${d} aggregate does not identify its event data`);return Object.freeze({...h,type:d,aggregate:Object.freeze({...h.aggregate}),data:i})}})}(a,c,{producer:i,aggregateType:b,aggregateId:d})}let D=C("cn.zlooks.user.registered.v1","user",g.re({user:o}).refine(a=>"active"===a.user.status,{message:"A registered user snapshot must be active",path:["user","status"]}).readonly(),a=>a.user.id),E=C("cn.zlooks.user.email-verified.v1","user",g.re({user:o}).refine(a=>null!==a.user.email&&a.user.emailVerified,{message:"An email-verified event must contain a verified email snapshot",path:["user","emailVerified"]}).readonly(),a=>a.user.id),F=g.k5(["displayName","avatar","homepage","bio"]);!function(a){let b=v.parse(a.providerId),c=y.parse(a.displayName),d=w.parse(a.contractPackage);if(0===a.events.length||a.events.length>256)throw TypeError("Event catalog must contain between 1 and 256 events");let e=a.events[0].definition.producer,f=new Set,g=new Set,h=a.events.map(a=>{var b;if(a.definition.producer!==e)throw TypeError("Event catalog definitions must have one producer");if(f.has(a.definition.type))throw TypeError("Event catalog event types must be unique");let c=x.parse(a.consumerExport);if(g.has(c))throw TypeError("Event catalog Consumer exports must be unique");f.add(a.definition.type),g.add(c);let h=function a(b){var c;if(null===b||"string"==typeof b||"boolean"==typeof b||"number"==typeof b&&Number.isFinite(b))return b;if(Array.isArray(b))return Object.freeze(b.map(a));if(null!==(c=b)&&"object"==typeof c&&!Array.isArray(c))return Object.freeze(Object.fromEntries(Object.entries(b).filter(([,a])=>void 0!==a).map(([b,c])=>[b,a(c)])));throw TypeError("Event JSON Schema contains a non-JSON value")}(q.bl(a.definition.dataSchema,{target:"draft-2020-12",unrepresentable:"any",io:"input"}));if(!(null!==(b=h)&&"object"==typeof b&&!Array.isArray(b)))throw TypeError("Event data schema must serialize to a JSON object");return Object.freeze({type:a.definition.type,title:y.parse(a.title),description:z.parse(a.description),producer:e,aggregateType:a.definition.aggregateType,consumer:Object.freeze({packageName:d,exportName:c}),dataSchema:h})});Object.freeze({protocol:"zlooks.event-catalog",protocolVersion:1,providerId:b,displayName:c,producer:e,contractPackage:d,count:h.length,delivery:Object.freeze({guarantee:"at-least-once",deduplicateBy:"eventId"}),events:Object.freeze(h)})}({providerId:"user",displayName:"用户服务事件",contractPackage:"@zlooks.cn/user-shared",events:[{definition:D,title:"用户已注册",description:"用户账户已经完成持久化创建并处于可用状态。",consumerExport:"consumeUserRegisteredEvent"},{definition:E,title:"用户邮箱已验证",description:"用户邮箱从未验证状态真实转换为已验证状态。",consumerExport:"consumeUserEmailVerifiedEvent"},{definition:C("cn.zlooks.user.profile-updated.v1","user",g.re({user:o,changedFields:g.YO(F).min(1).max(4).refine(a=>new Set(a).size===a.length,"Profile fields must be unique").readonly()}).readonly(),a=>a.user.id),title:"用户资料已更新",description:"用户公开资料字段发生真实变化并携带变更后的完整安全快照。",consumerExport:"consumeUserProfileUpdatedEvent"},{definition:C("cn.zlooks.user.session-created.v1","session-family",g.re({user:o,sessionFamily:p,intent:g.k5(["login","registration","recovery"])}).superRefine((a,b)=>{a.sessionFamily.userId!==a.user.id&&b.addIssue({code:"custom",message:"Session and user snapshots must identify the same user",path:["sessionFamily","userId"]}),null!==a.sessionFamily.revokedAt&&b.addIssue({code:"custom",message:"A created session snapshot must be active",path:["sessionFamily","revokedAt"]}),"active"!==a.user.status&&b.addIssue({code:"custom",message:"A session-created event must contain an active user snapshot",path:["user","status"]})}).readonly(),a=>a.sessionFamily.id),title:"用户会话族已创建",description:"登录、注册或恢复流程已经创建一个新的活动会话族。",consumerExport:"consumeUserSessionCreatedEvent"},{definition:C("cn.zlooks.user.session-revoked.v1","session-family",g.re({user:o,sessionFamily:p}).superRefine((a,b)=>{a.sessionFamily.userId!==a.user.id&&b.addIssue({code:"custom",message:"Session and user snapshots must identify the same user",path:["sessionFamily","userId"]}),null===a.sessionFamily.revokedAt&&b.addIssue({code:"custom",message:"A revoked session snapshot must include its revocation",path:["sessionFamily","revokedAt"]})}).readonly(),a=>a.sessionFamily.id),title:"用户会话族已撤销",description:"用户会话族从活动状态真实转换为已撤销状态。",consumerExport:"consumeUserSessionRevokedEvent"}]}),(0,e.Sz)(i,"/api/auth/methods"),(0,e.Sz)(i,"/api/auth/transactions"),(0,e.Sz)(i,"/api/auth/logout"),(0,e.Sz)(i,"/api/auth/session/refresh"),(0,e.Sz)(i,"/api/user"),(0,e.Sz)(i,"/api/user/sessions"),Object.freeze({crossOriginRejected:1001,requestRejected:1002,authenticationRequired:1003,sessionExpired:1004,authenticationDenied:1005,authenticationPending:1006,routeNotFound:1007,accountNotFound:1008,accountAlreadyExists:1009,invalidVerificationCode:1010,verificationRateLimited:1011,emailDeliveryFailed:1012,serviceUnavailable:1013});let G=g.Yj().min(1).max(2048).regex(/^\/(?!\/)[^?#]*$/),H=g.gM("status",[g.re({status:g.eu("anonymous"),loginMethods:g.YO(g.re({id:g.Yj().min(1).max(128),label:g.Yj().min(1).max(80),href:G})).max(64)}),g.re({status:g.eu("authenticated"),user:g.re({label:g.Yj().min(1).max(160),secondary:g.Yj().min(1).max(320).optional(),avatarText:g.Yj().min(1).max(8),avatarUrl:g.OZ({protocol:/^https?$/}).max(2048).optional()}),accountHref:G,logoutHref:G})]).readonly(),I=g.gM("action",[g.re({action:g.eu("set"),value:g.Yj().min(1).max(4096),expiresAt:h.w$({offset:!0})}),g.re({action:g.eu("clear")})]),J=g.Yj().min(1).max(4096),K=g.re({id:g.Yj().regex(/^[a-z][a-z0-9._-]{0,127}$/),label:g.Yj().trim().min(1).max(80),capabilities:g.re({login:g.zM(),registration:g.zM()}),rsc:g.re({pluginId:g.Yj().regex(/^[a-z][a-z0-9._-]{0,127}$/),slots:g.re({login:G.optional(),registration:G.optional()})})}).readonly(),L=g.re({}).readonly(),M=g.re({methods:g.YO(K).max(64).readonly()}).readonly(),N=g.re({methodId:g.Yj().regex(/^[a-z][a-z0-9._-]{0,127}$/),intent:g.k5(["login","registration","linking","reauthentication","recovery"]),loginHint:g.Yj().trim().min(1).max(320).optional(),requestContext:g.re({clientKey:g.Yj().min(16).max(128)})}).readonly(),O=g.gM("status",[g.re({status:g.eu("input-required"),transactionId:g.uR(),methodId:g.Yj().regex(/^[a-z][a-z0-9._-]{0,127}$/)}),g.re({status:g.eu("redirect-required"),transactionId:g.uR(),methodId:g.Yj().regex(/^[a-z][a-z0-9._-]{0,127}$/),redirectUrl:g.OZ().max(4096)}),g.re({status:g.eu("pending"),transactionId:g.uR(),methodId:g.Yj().regex(/^[a-z][a-z0-9._-]{0,127}$/),retryAfterMs:g.ai().int().min(250).max(6e4)})]).readonly(),P=g.re({input:g.L5()}).readonly(),Q=g.gM("status",[g.re({status:g.eu("verified"),session:g.re({token:J,expiresAt:h.w$({offset:!0})}),user:g.L5()}),g.re({status:g.eu("denied"),code:g.Yj().min(1).max(128)}),g.re({status:g.eu("pending"),retryAfterMs:g.ai().int().min(250).max(6e4)})]).readonly(),R=g.re({id:g.Yj().min(1).max(128),displayName:g.Yj().min(1).max(160).optional(),avatar:g.OZ({protocol:/^https?$/}).max(2048).optional(),homepage:g.OZ({protocol:/^https?$/}).max(2048).optional(),bio:g.Yj().max(500).optional(),email:g.Rp().max(320).optional(),emailVerified:g.zM()}).readonly(),S=g.re({user:R}).readonly(),T=g.re({input:g.L5()}).readonly(),U=g.re({id:g.Yj().min(1).max(128),createdAt:h.w$(),lastSeenAt:h.w$(),expiresAt:h.w$(),revoked:g.zM()}).readonly(),V=g.re({sessions:g.YO(U).max(100).readonly()}).readonly(),W=g.re({revoked:g.zM()}).readonly(),X=g.re({revoked:g.zM()}).readonly(),Y=g.re({session:g.re({token:J,expiresAt:h.w$({offset:!0}),user:R})}).readonly(),Z=g.re({protocol:g.eu("zlooks.event-catalog"),protocolVersion:g.eu(1),providerId:g.eu("user"),displayName:g.Yj().min(1).max(160),producer:g.eu(i),contractPackage:g.eu("@zlooks.cn/user-shared"),count:g.eu(5),delivery:g.re({guarantee:g.eu("at-least-once"),deduplicateBy:g.eu("eventId")}),events:g.YO(g.re({type:g.Yj().min(1).max(256),title:g.Yj().min(1).max(160),description:g.Yj().min(1).max(1e3),producer:g.eu(i),aggregateType:g.Yj().min(1).max(128),consumer:g.re({packageName:g.eu("@zlooks.cn/user-shared"),exportName:g.Yj().min(1).max(128)}),dataSchema:g.g1(g.Yj(),g.L5())})).length(5).readonly()}).readonly(),$=g.re({}).readonly(),_=g.re({id:g.uR(),displayName:g.Yj().trim().min(1).max(160).nullable(),avatar:g.OZ({protocol:/^https?$/}).max(2048).nullable(),homepage:g.OZ({protocol:/^https?$/}).max(2048).nullable().optional(),bio:g.Yj().trim().min(1).max(500).nullable().optional()}).readonly(),aa=g.gM("authenticated",[g.re({authenticated:g.eu(!1)}),g.re({authenticated:g.eu(!0),user:_})]).readonly(),ab=g.re({userIds:g.YO(g.uR()).min(1).max(100).refine(a=>new Set(a).size===a.length,{message:"User IDs must be unique"}).readonly()}).readonly(),ac=g.re({users:g.YO(_).max(100).refine(a=>new Set(a.map(a=>a.id)).size===a.length,{message:"Public user profiles must be unique"}).readonly()}).readonly();g.re({method:g.k5(["GET","POST","PATCH"]),path:G,origin:g.Yj().max(2048).optional(),clientKey:g.Yj().regex(/^[a-f0-9]{64}$/),body:g.L5().optional()}).readonly(),g.re({status:g.ai().int().min(200).max(599).refine(a=>a<300||a>=400),body:e.RW,sessionCookie:I.optional()}).superRefine((a,b)=>{let c=a.status>=200&&a.status<300;!(0,e.lu)(a.body)!==c&&b.addIssue({code:"custom",message:"HTTP status and browser API response code disagree",path:["body","code"]})}).readonly();let ad=g.re({protocol:g.eu("zlooks.user.credential-lifecycle"),kind:g.k5(["registration","recovery"]),authenticationTransactionId:g.uR(),extensionId:g.Yj().regex(/^[a-z][a-z0-9._-]{0,127}$/),methodId:g.Yj().regex(/^[a-z][a-z0-9._-]{0,127}$/),subject:g.Yj().trim().min(1).max(512),email:g.Rp().max(320),occurredAt:h.w$({offset:!0})}).readonly(),ae=g.re({acknowledged:g.eu(!0)}).readonly();function af(a){return H.parse(a)}function ag(a){return L.parse(a)}function ah(a){return M.parse(a)}function ai(a){return N.parse(a)}function aj(a){return O.parse(a)}function ak(a){return P.parse(a)}function al(a){return Q.parse(a)}function am(a){return S.parse(a)}function an(a){return T.parse(a)}function ao(a){return V.parse(a)}function ap(a){return W.parse(a)}function aq(a){return X.parse(a)}function ar(a){return Y.parse(a)}function as(a){return Z.parse(a)}function at(a){return ad.parse(a)}function au(a){return ae.parse(a)}function av(a){return $.parse(a)}function aw(a){return aa.parse(a)}function ax(a){return ab.parse(a)}function ay(a){return ac.parse(a)}async function az(a,b,c,d,e,f){let g=e(c);return f(await a.call(i,b,g,d))}async function aA(a,b){return Object.freeze({listAuthenticationMethods:b=>az(a,"/auth/catalog",{},b,ag,ah),beginAuthentication:(b,c)=>az(a,"/auth/transactions",b,c,ai,aj),completeAuthentication:(b,c,d)=>az(a,"/auth/transactions/:transactionId/complete".replace(":transactionId",encodeURIComponent(g.Yj().trim().min(1).max(128).parse(b))),c,d,ak,al),logout:b=>az(a,"/auth/logout",{},b,ag,aq),refreshSession:b=>az(a,"/auth/session/refresh",{},b,ag,ar),applyCredentialLifecycle:(b,c)=>az(a,"/auth/credential-lifecycle",b,c,at,au),readCurrentUser:b=>az(a,"/users/current",{},b,av,aw),readPublicProfiles:async(b,c)=>{let d=ax(b),e=await az(a,"/users/public-profiles",d,c,ax,ay),f=new Set(d.userIds);if(e.users.some(a=>!f.has(a.id)))throw TypeError("User service returned a public profile that was not requested");return e},readAccount:b=>az(a,"/users/me",{},b,ag,am),updateAccount:(b,c)=>az(a,"/users/me/update",b,c,an,am),listAccountSessions:b=>az(a,"/users/me/sessions",{},b,ag,ao),revokeAccountSession:(b,c)=>az(a,"/users/me/sessions/:familyId/revoke".replace(":familyId",encodeURIComponent(g.Yj().trim().min(1).max(128).parse(b))),{},c,ag,ap),readShell:b=>az(a,"/users/shell",{},b,ag,af),readEventCatalog:b=>az(a,"/events/catalog",{},b,ag,as)}).readShell(b)}var aB=c(70349);let aC=g.Yj().min(1).max(2048).regex(/^\/(?!\/)[^?#]*$/),aD=g.OZ().refine(a=>{let b=new URL(a);return("http:"===b.protocol||"https:"===b.protocol)&&!b.username&&!b.password&&"/"===b.pathname&&!b.search&&!b.hash},"Public origin must be one canonical HTTP(S) origin"),aE=g.re({key:g.Yj().min(1).max(256),label:g.Yj().min(1).max(160),href:aC,order:g.ai().finite()}),aF=g.re({navigation:g.YO(aE).max(256),origin:aD,pathname:aC,user:g.L5()}),aG=g.re({status:g.eu("unavailable")});var aH=c(10397);async function aI(a){var b,c,d,e;let g,h,i=await aJ(a),j={navigation:(b=a.rsc,c=a.policy,(0,aH.l)(b.deployments,b.artifacts).filter(({pluginId:a,buildId:b})=>c.canDiscover({pluginId:a,buildId:b})).flatMap(({pluginId:a,metadata:b})=>(b?.navigation??[]).map(b=>{var c,d;return{key:`${a}:${b.id}`,label:b.label,href:(c=a,d=b.path,`/${encodeURIComponent(c)}${"/"===d?"":d}`),order:b.order??0}})).sort((a,b)=>a.order-b.order||a.key.localeCompare(b.key))),origin:a.origin,pathname:a.pathname,user:i},k={[f.qe]:(0,f.WA)(a.globalConfig),__zlooks_shell_context:JSON.stringify((d=j,{navigation:(g=aF.parse(d)).navigation,origin:g.origin,pathname:g.pathname,user:(e=g.user,(h=aG.safeParse(e)).success?h.data:af(e))}))};return a.sessionToken&&(k.__zlooks_user_session=a.sessionToken),{params:k,shell:j}}async function aJ(a){try{return await aA(a.application,{context:(0,d.eC)(a.sessionToken?{[e.Ih]:{[aB.CY]:a.sessionToken}}:{}),timeout:1500,retries:0,...a.signal?{signal:a.signal}:{}})}catch(b){if(a.signal?.aborted)throw a.signal.reason??Error("RSC shell request was aborted");return a.logger.warn({err:b,event:"gateway.rsc-shell.unavailable"},"User shell projection is unavailable"),{status:"unavailable"}}}},25041:(a,b,c)=>{Promise.resolve().then(c.bind(c,121)),Promise.resolve().then(c.bind(c,81502))},34769:(a,b,c)=>{Promise.resolve().then(c.bind(c,2131)),Promise.resolve().then(c.bind(c,5200))},38825:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>k,dynamic:()=>j,metadata:()=>i});var d=c(68108),e=c(99103),f=c(37922),g=c(97242),h=c(5200);c(54361),c(67018),c(95751);let i={referrer:"strict-origin-when-cross-origin",icons:{icon:[{url:"/favicon.ico",type:"image/svg+xml"}]},formatDetection:{email:!1,address:!1,telephone:!1}},j="force-dynamic";async function k({children:a}){return(await (0,f.oV)(g.A)).withCurrent(({config:b})=>(0,d.jsx)("html",{lang:"zh-CN",children:(0,d.jsx)("body",{children:(0,d.jsx)(e.Z,{children:(0,d.jsx)(h.default,{assetMountPath:b.rsc.assetMountPath,csrfToken:b.rsc.csrfToken,children:a})})})}))}},47113:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,30816,23)),Promise.resolve().then(c.t.bind(c,86955,23)),Promise.resolve().then(c.t.bind(c,61031,23)),Promise.resolve().then(c.t.bind(c,82922,23)),Promise.resolve().then(c.t.bind(c,78814,23)),Promise.resolve().then(c.t.bind(c,47898,23)),Promise.resolve().then(c.t.bind(c,5119,23)),Promise.resolve().then(c.t.bind(c,85706,23))},63788:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,95082,23))},67018:()=>{},76940:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,30816,23))},81502:(a,b,c)=>{"use strict";c.d(b,{default:()=>i});var d=c(17858),e=c(73189),f=c(64256),g=c(85947);function h(){return(0,d.jsx)("div",{"aria-hidden":"true","data-hile-rsc-initial-route":!0})}function i({assetMountPath:a,csrfToken:b,children:c}){return(0,d.jsx)(f.j,{serverFunctions:{headers:{"x-rsc-csrf-token":b}},children:(0,d.jsx)(e.jj,{assetMountPath:a,suspensePolicy:"host",renderError:(a,b,c)=>(0,d.jsxs)("section",{role:"alert","data-hile-rsc-error":b.referenceId,children:[(0,d.jsx)("p",{children:"插件组件暂时无法加载。"}),(0,d.jsx)("button",{type:"button",onClick:c,children:"重试"})]}),children:(0,d.jsx)(g.Suspense,{fallback:(0,d.jsx)(h,{}),children:c})})})}},95751:()=>{}};
1
+ exports.id=276,exports.ids=[276],exports.modules={5200:(a,b,c)=>{"use strict";c.d(b,{default:()=>d});let d=(0,c(87984).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/Users/evioshen/code/github/cevio/www.zlooks.cn/packages/gateway-server/src/app/rsc-client-runtime.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/evioshen/code/github/cevio/www.zlooks.cn/packages/gateway-server/src/app/rsc-client-runtime.tsx","default")},12265:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,95082,23)),Promise.resolve().then(c.t.bind(c,20125,23)),Promise.resolve().then(c.t.bind(c,13261,23)),Promise.resolve().then(c.t.bind(c,36804,23)),Promise.resolve().then(c.t.bind(c,76028,23)),Promise.resolve().then(c.t.bind(c,70168,23)),Promise.resolve().then(c.t.bind(c,82337,23)),Promise.resolve().then(c.bind(c,89352))},17322:(a,b,c)=>{"use strict";c.d(b,{o:()=>aJ});var d=c(18509),e=c(50781),f=c(37714),g=c(62710),h=c(29951);let i="cn.zlooks.user.server",j=g.k5(["logout","user-request","family-limit","credential-recovery"]),k=g.Yj().refine(a=>a===a.trim().normalize("NFKC"),"Display name must be normalized").refine(a=>Array.from(a).length>=1&&Array.from(a).length<=160,"Display name must contain 1 to 160 Unicode code points"),l=g.Yj().refine(a=>a===a.trim().normalize("NFKC"),"Bio must be normalized").refine(a=>Array.from(a).length>=1&&Array.from(a).length<=500,"Bio must contain 1 to 500 Unicode code points"),m=g.OZ().max(2048).refine(a=>{let b=new URL(a).protocol;return"http:"===b||"https:"===b},"URL must use HTTP or HTTPS").refine(a=>a===new URL(a).toString(),"URL must be canonical"),n=g.Rp().max(320).refine(a=>a===a.toLocaleLowerCase("en-US"),"Email must be lowercase"),o=g.re({id:g.uR(),displayName:k.nullable(),avatar:m.nullable(),homepage:m.nullable(),bio:l.nullable(),email:n.nullable(),emailVerified:g.zM(),status:g.k5(["active","disabled","deleted"]),createdAt:h.w$({offset:!0}),updatedAt:h.w$({offset:!0}),version:g.ai().int().positive()}).superRefine((a,b)=>{a.emailVerified&&null===a.email&&b.addIssue({code:"custom",message:"A verified user snapshot must include its email",path:["email"]}),Date.parse(a.updatedAt)<Date.parse(a.createdAt)&&b.addIssue({code:"custom",message:"User updated time must not precede creation time",path:["updatedAt"]})}).readonly(),p=g.re({id:g.uR(),userId:g.uR(),createdAt:h.w$({offset:!0}),expiresAt:h.w$({offset:!0}),lastSeenAt:h.w$({offset:!0}),revokedAt:h.w$({offset:!0}).nullable(),revokeReason:j.nullable()}).superRefine((a,b)=>{let c=Date.parse(a.createdAt);null===a.revokedAt!=(null===a.revokeReason)&&b.addIssue({code:"custom",message:"Session revocation time and reason must be present together",path:["revokedAt"]}),Date.parse(a.expiresAt)<=c&&b.addIssue({code:"custom",message:"Session expiry must follow creation time",path:["expiresAt"]});let d=Date.parse(a.lastSeenAt);(d<c||d>Date.parse(a.expiresAt))&&b.addIssue({code:"custom",message:"Session last-seen time must fall within its lifetime",path:["lastSeenAt"]}),null!==a.revokedAt&&Date.parse(a.revokedAt)<c&&b.addIssue({code:"custom",message:"Session revoked time must not precede creation time",path:["revokedAt"]})}).readonly();var q=c(28621);let r=g.Yj().max(256).regex(/^[a-z][a-z0-9]*(?:\.[a-z][a-z0-9-]*)+\.v[1-9][0-9]*$/),s=g.Yj().max(256).regex(/^[a-z][a-z0-9]*(?:\.[a-z][a-z0-9]*)+$/),t=g.Yj().regex(/^[a-z][a-z0-9-]{0,63}$/),u=g.Yj().trim().min(1).max(256),v=g.Yj().max(128).regex(/^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)*$/),w=g.Yj().max(128).regex(/^@zlooks\.cn\/[a-z0-9]+(?:-[a-z0-9]+)*$/),x=g.Yj().max(128).regex(/^[A-Za-z_$][A-Za-z0-9_$]*$/),y=g.Yj().trim().min(1).max(120),z=g.Yj().trim().min(1).max(1e3),A=g.Pq(),B=g.re({protocol:g.eu("zlooks.event"),protocolVersion:g.eu(1),eventId:g.uR(),type:r,producer:s,aggregate:g.re({type:t,id:u}).readonly(),occurredAt:h.w$({offset:!0}),data:A}).readonly();function C(a,b,c,d){return function(a,b,c){let d=r.parse(a),e=s.parse(c.producer),f=t.parse(c.aggregateType),g=c.aggregateId;if("function"!=typeof g)throw TypeError("Event aggregateId must be a function");return Object.freeze({type:d,producer:e,aggregateType:f,dataSchema:b,parse(a){let c,h=Object.freeze({...c=B.parse(a),aggregate:Object.freeze({...c.aggregate})});if(h.type!==d)throw TypeError(`Expected event type ${d}`);if(h.producer!==e)throw TypeError(`Expected event producer ${e}`);let i=b.parse(h.data);A.parse(i);let j=u.parse(g(i));if(h.aggregate.type!==f||h.aggregate.id!==j)throw TypeError(`${d} aggregate does not identify its event data`);return Object.freeze({...h,type:d,aggregate:Object.freeze({...h.aggregate}),data:i})}})}(a,c,{producer:i,aggregateType:b,aggregateId:d})}let D=C("cn.zlooks.user.registered.v1","user",g.re({user:o}).refine(a=>"active"===a.user.status,{message:"A registered user snapshot must be active",path:["user","status"]}).readonly(),a=>a.user.id),E=C("cn.zlooks.user.email-verified.v1","user",g.re({user:o}).refine(a=>null!==a.user.email&&a.user.emailVerified,{message:"An email-verified event must contain a verified email snapshot",path:["user","emailVerified"]}).readonly(),a=>a.user.id),F=g.k5(["displayName","avatar","homepage","bio"]);!function(a){let b=v.parse(a.providerId),c=y.parse(a.displayName),d=w.parse(a.contractPackage);if(0===a.events.length||a.events.length>256)throw TypeError("Event catalog must contain between 1 and 256 events");let e=a.events[0].definition.producer,f=new Set,g=new Set,h=a.events.map(a=>{var b;if(a.definition.producer!==e)throw TypeError("Event catalog definitions must have one producer");if(f.has(a.definition.type))throw TypeError("Event catalog event types must be unique");let c=x.parse(a.consumerExport);if(g.has(c))throw TypeError("Event catalog Consumer exports must be unique");f.add(a.definition.type),g.add(c);let h=function a(b){var c;if(null===b||"string"==typeof b||"boolean"==typeof b||"number"==typeof b&&Number.isFinite(b))return b;if(Array.isArray(b))return Object.freeze(b.map(a));if(null!==(c=b)&&"object"==typeof c&&!Array.isArray(c))return Object.freeze(Object.fromEntries(Object.entries(b).filter(([,a])=>void 0!==a).map(([b,c])=>[b,a(c)])));throw TypeError("Event JSON Schema contains a non-JSON value")}(q.bl(a.definition.dataSchema,{target:"draft-2020-12",unrepresentable:"any",io:"input"}));if(!(null!==(b=h)&&"object"==typeof b&&!Array.isArray(b)))throw TypeError("Event data schema must serialize to a JSON object");return Object.freeze({type:a.definition.type,title:y.parse(a.title),description:z.parse(a.description),producer:e,aggregateType:a.definition.aggregateType,consumer:Object.freeze({packageName:d,exportName:c}),dataSchema:h})});Object.freeze({protocol:"zlooks.event-catalog",protocolVersion:1,providerId:b,displayName:c,producer:e,contractPackage:d,count:h.length,delivery:Object.freeze({guarantee:"at-least-once",deduplicateBy:"eventId"}),events:Object.freeze(h)})}({providerId:"user",displayName:"用户服务事件",contractPackage:"@zlooks.cn/user-shared",events:[{definition:D,title:"用户已注册",description:"用户账户已经完成持久化创建并处于可用状态。",consumerExport:"consumeUserRegisteredEvent"},{definition:E,title:"用户邮箱已验证",description:"用户邮箱从未验证状态真实转换为已验证状态。",consumerExport:"consumeUserEmailVerifiedEvent"},{definition:C("cn.zlooks.user.profile-updated.v1","user",g.re({user:o,changedFields:g.YO(F).min(1).max(4).refine(a=>new Set(a).size===a.length,"Profile fields must be unique").readonly()}).readonly(),a=>a.user.id),title:"用户资料已更新",description:"用户公开资料字段发生真实变化并携带变更后的完整安全快照。",consumerExport:"consumeUserProfileUpdatedEvent"},{definition:C("cn.zlooks.user.session-created.v1","session-family",g.re({user:o,sessionFamily:p,intent:g.k5(["login","registration","recovery"])}).superRefine((a,b)=>{a.sessionFamily.userId!==a.user.id&&b.addIssue({code:"custom",message:"Session and user snapshots must identify the same user",path:["sessionFamily","userId"]}),null!==a.sessionFamily.revokedAt&&b.addIssue({code:"custom",message:"A created session snapshot must be active",path:["sessionFamily","revokedAt"]}),"active"!==a.user.status&&b.addIssue({code:"custom",message:"A session-created event must contain an active user snapshot",path:["user","status"]})}).readonly(),a=>a.sessionFamily.id),title:"用户会话族已创建",description:"登录、注册或恢复流程已经创建一个新的活动会话族。",consumerExport:"consumeUserSessionCreatedEvent"},{definition:C("cn.zlooks.user.session-revoked.v1","session-family",g.re({user:o,sessionFamily:p}).superRefine((a,b)=>{a.sessionFamily.userId!==a.user.id&&b.addIssue({code:"custom",message:"Session and user snapshots must identify the same user",path:["sessionFamily","userId"]}),null===a.sessionFamily.revokedAt&&b.addIssue({code:"custom",message:"A revoked session snapshot must include its revocation",path:["sessionFamily","revokedAt"]})}).readonly(),a=>a.sessionFamily.id),title:"用户会话族已撤销",description:"用户会话族从活动状态真实转换为已撤销状态。",consumerExport:"consumeUserSessionRevokedEvent"}]}),(0,e.Sz)(i,"/api/auth/methods"),(0,e.Sz)(i,"/api/auth/transactions"),(0,e.Sz)(i,"/api/auth/logout"),(0,e.Sz)(i,"/api/auth/session/refresh"),(0,e.Sz)(i,"/api/user"),(0,e.Sz)(i,"/api/user/sessions"),Object.freeze({crossOriginRejected:1001,requestRejected:1002,authenticationRequired:1003,sessionExpired:1004,authenticationDenied:1005,authenticationPending:1006,routeNotFound:1007,accountNotFound:1008,accountAlreadyExists:1009,invalidVerificationCode:1010,verificationRateLimited:1011,emailDeliveryFailed:1012,serviceUnavailable:1013});let G=g.Yj().min(1).max(2048).regex(/^\/(?!\/)[^?#]*$/),H=g.gM("status",[g.re({status:g.eu("anonymous"),loginMethods:g.YO(g.re({id:g.Yj().min(1).max(128),label:g.Yj().min(1).max(80),href:G})).max(64)}),g.re({status:g.eu("authenticated"),user:g.re({label:g.Yj().min(1).max(160),secondary:g.Yj().min(1).max(320).optional(),avatarText:g.Yj().min(1).max(8),avatarUrl:g.OZ({protocol:/^https?$/}).max(2048).optional()}),accountHref:G,logoutHref:G})]).readonly(),I=g.gM("action",[g.re({action:g.eu("set"),value:g.Yj().min(1).max(4096),expiresAt:h.w$({offset:!0})}),g.re({action:g.eu("clear")})]),J=g.Yj().min(1).max(4096),K=g.Yj().trim().min(1).max(128),L=g.re({id:g.Yj().regex(/^[a-z][a-z0-9._-]{0,127}$/),label:g.Yj().trim().min(1).max(80),capabilities:g.re({login:g.zM(),registration:g.zM()}),rsc:g.re({pluginId:g.Yj().regex(/^[a-z][a-z0-9._-]{0,127}$/),slots:g.re({login:G.optional(),registration:G.optional()})})}).readonly(),M=g.re({}).readonly(),N=g.re({methods:g.YO(L).max(64).readonly()}).readonly(),O=g.re({methodId:g.Yj().regex(/^[a-z][a-z0-9._-]{0,127}$/),intent:g.k5(["login","registration","linking","reauthentication","recovery"]),loginHint:g.Yj().trim().min(1).max(320).optional(),requestContext:g.re({clientKey:g.Yj().min(16).max(128)})}).readonly(),P=g.gM("status",[g.re({status:g.eu("input-required"),transactionId:g.uR(),methodId:g.Yj().regex(/^[a-z][a-z0-9._-]{0,127}$/)}),g.re({status:g.eu("redirect-required"),transactionId:g.uR(),methodId:g.Yj().regex(/^[a-z][a-z0-9._-]{0,127}$/),redirectUrl:g.OZ().max(4096)}),g.re({status:g.eu("pending"),transactionId:g.uR(),methodId:g.Yj().regex(/^[a-z][a-z0-9._-]{0,127}$/),retryAfterMs:g.ai().int().min(250).max(6e4)})]).readonly(),Q=g.re({input:g.L5()}).readonly(),R=g.gM("status",[g.re({status:g.eu("verified"),session:g.re({token:J,expiresAt:h.w$({offset:!0})}),user:g.L5()}),g.re({status:g.eu("denied"),code:g.Yj().min(1).max(128)}),g.re({status:g.eu("pending"),retryAfterMs:g.ai().int().min(250).max(6e4)})]).readonly(),S=g.re({id:g.Yj().min(1).max(128),displayName:g.Yj().min(1).max(160).optional(),avatar:g.OZ({protocol:/^https?$/}).max(2048).optional(),homepage:g.OZ({protocol:/^https?$/}).max(2048).optional(),bio:g.Yj().max(500).optional(),email:g.Rp().max(320).optional(),emailVerified:g.zM()}).readonly(),T=g.re({user:S}).readonly(),U=g.re({input:g.L5()}).readonly(),V=g.re({id:g.Yj().min(1).max(128),createdAt:h.w$(),lastSeenAt:h.w$(),expiresAt:h.w$(),revoked:g.zM()}).readonly(),W=g.re({sessions:g.YO(V).max(100).readonly()}).readonly(),X=g.re({revoked:g.zM()}).readonly(),Y=g.re({revoked:g.zM()}).readonly(),Z=g.re({session:g.re({token:J,expiresAt:h.w$({offset:!0}),user:S})}).readonly(),$=g.re({protocol:g.eu("zlooks.event-catalog"),protocolVersion:g.eu(1),providerId:g.eu("user"),displayName:g.Yj().min(1).max(160),producer:g.eu(i),contractPackage:g.eu("@zlooks.cn/user-shared"),count:g.eu(5),delivery:g.re({guarantee:g.eu("at-least-once"),deduplicateBy:g.eu("eventId")}),events:g.YO(g.re({type:g.Yj().min(1).max(256),title:g.Yj().min(1).max(160),description:g.Yj().min(1).max(1e3),producer:g.eu(i),aggregateType:g.Yj().min(1).max(128),consumer:g.re({packageName:g.eu("@zlooks.cn/user-shared"),exportName:g.Yj().min(1).max(128)}),dataSchema:g.g1(g.Yj(),g.L5())})).length(5).readonly()}).readonly(),_=g.re({}).readonly(),aa=g.re({id:g.uR(),displayName:g.Yj().trim().min(1).max(160).nullable(),avatar:g.OZ({protocol:/^https?$/}).max(2048).nullable(),homepage:g.OZ({protocol:/^https?$/}).max(2048).nullable().optional(),bio:g.Yj().trim().min(1).max(500).nullable().optional()}).readonly(),ab=g.gM("authenticated",[g.re({authenticated:g.eu(!1)}),g.re({authenticated:g.eu(!0),user:aa})]).readonly(),ac=g.re({userIds:g.YO(g.uR()).min(1).max(100).refine(a=>new Set(a).size===a.length,{message:"User IDs must be unique"}).readonly()}).readonly(),ad=g.re({users:g.YO(aa).max(100).refine(a=>new Set(a.map(a=>a.id)).size===a.length,{message:"Public user profiles must be unique"}).readonly()}).readonly();g.re({method:g.k5(["GET","POST","PATCH"]),path:G,origin:g.Yj().max(2048).optional(),clientKey:g.Yj().regex(/^[a-f0-9]{64}$/),body:g.L5().optional()}).readonly(),g.re({status:g.ai().int().min(200).max(599).refine(a=>a<300||a>=400),body:e.RW,sessionCookie:I.optional()}).superRefine((a,b)=>{let c=a.status>=200&&a.status<300;!(0,e.lu)(a.body)!==c&&b.addIssue({code:"custom",message:"HTTP status and browser API response code disagree",path:["body","code"]})}).readonly();let ae=g.re({protocol:g.eu("zlooks.user.credential-lifecycle"),kind:g.k5(["registration","recovery"]),authenticationTransactionId:g.uR(),extensionId:g.Yj().regex(/^[a-z][a-z0-9._-]{0,127}$/),methodId:g.Yj().regex(/^[a-z][a-z0-9._-]{0,127}$/),subject:g.Yj().trim().min(1).max(512),email:g.Rp().max(320),occurredAt:h.w$({offset:!0})}).readonly(),af=g.re({acknowledged:g.eu(!0)}).readonly();function ag(a){return H.parse(a)}function ah(a){return M.parse(a)}function ai(a){return N.parse(a)}function aj(a){return O.parse(a)}function ak(a){return P.parse(a)}function al(a){return Q.parse(a)}function am(a){return R.parse(a)}function an(a){return T.parse(a)}function ao(a){return U.parse(a)}function ap(a){return W.parse(a)}function aq(a){return X.parse(a)}function ar(a){return Y.parse(a)}function as(a){return Z.parse(a)}function at(a){return $.parse(a)}function au(a){return ae.parse(a)}function av(a){return af.parse(a)}function aw(a){return _.parse(a)}function ax(a){return ab.parse(a)}function ay(a){return ac.parse(a)}function az(a){return ad.parse(a)}async function aA(a,b,c,d,e,f){let g=e(c);return f(await a.call(i,b,g,d))}async function aB(a,b){return Object.freeze({listAuthenticationMethods:b=>aA(a,"/auth/catalog",{},b,ah,ai),beginAuthentication:(b,c)=>aA(a,"/auth/transactions",b,c,aj,ak),completeAuthentication:(b,c,d)=>aA(a,"/auth/transactions/:transactionId/complete".replace(":transactionId",encodeURIComponent(g.Yj().trim().min(1).max(128).parse(b))),c,d,al,am),logout:b=>aA(a,"/auth/logout",{},b,ah,ar),refreshSession:b=>aA(a,"/auth/session/refresh",{},b,ah,as),applyCredentialLifecycle:(b,c)=>aA(a,"/auth/credential-lifecycle",b,c,au,av),readCurrentUser:b=>aA(a,"/users/current",{},b,aw,ax),readPublicProfiles:async(b,c)=>{let d=ay(b),e=await aA(a,"/users/public-profiles",d,c,ay,az),f=new Set(d.userIds);if(e.users.some(a=>!f.has(a.id)))throw TypeError("User service returned a public profile that was not requested");return e},readAccount:b=>aA(a,"/users/me",{},b,ah,an),updateAccount:(b,c)=>aA(a,"/users/me/update",b,c,ao,an),listAccountSessions:b=>aA(a,"/users/me/sessions",{},b,ah,ap),revokeAccountSession:(b,c)=>aA(a,"/users/me/sessions/:familyId/revoke".replace(":familyId",encodeURIComponent(K.parse(b))),{},c,ah,aq),readShell:b=>aA(a,"/users/shell",{},b,ah,ag),readEventCatalog:b=>aA(a,"/events/catalog",{},b,ah,at)}).readShell(b)}var aC=c(70349);let aD=g.Yj().min(1).max(2048).regex(/^\/(?!\/)[^?#]*$/),aE=g.OZ().refine(a=>{let b=new URL(a);return("http:"===b.protocol||"https:"===b.protocol)&&!b.username&&!b.password&&"/"===b.pathname&&!b.search&&!b.hash},"Public origin must be one canonical HTTP(S) origin"),aF=g.re({key:g.Yj().min(1).max(256),label:g.Yj().min(1).max(160),href:aD,order:g.ai().finite()}),aG=g.re({navigation:g.YO(aF).max(256),origin:aE,pathname:aD,user:g.L5()}),aH=g.re({status:g.eu("unavailable")});var aI=c(5598);async function aJ(a){var b,c,d,e;let g,h,i=await aK(a),j={navigation:(b=a.rsc,c=a.policy,(0,aI.l)(b.deployments,b.artifacts).filter(({pluginId:a,buildId:b})=>c.canDiscover({pluginId:a,buildId:b})).flatMap(({pluginId:a,metadata:b})=>(b?.navigation??[]).map(b=>{var c,d;return{key:`${a}:${b.id}`,label:b.label,href:(c=a,d=b.path,`/${encodeURIComponent(c)}${"/"===d?"":d}`),order:b.order??0}})).sort((a,b)=>a.order-b.order||a.key.localeCompare(b.key))),origin:a.origin,pathname:a.pathname,user:i},k={[f.qe]:(0,f.WA)(a.globalConfig),__zlooks_shell_context:JSON.stringify((d=j,{navigation:(g=aG.parse(d)).navigation,origin:g.origin,pathname:g.pathname,user:(e=g.user,(h=aH.safeParse(e)).success?h.data:ag(e))}))};return a.sessionToken&&(k.__zlooks_user_session=a.sessionToken),{params:k,shell:j}}async function aK(a){try{return await aB(a.application,{context:(0,d.eC)(a.sessionToken?{[e.Ih]:{[aC.CY]:a.sessionToken}}:{}),timeout:1500,retries:0,...a.signal?{signal:a.signal}:{}})}catch(b){if(a.signal?.aborted)throw a.signal.reason??Error("RSC shell request was aborted");return a.logger.warn({err:b,event:"gateway.rsc-shell.unavailable"},"User shell projection is unavailable"),{status:"unavailable"}}}},25041:(a,b,c)=>{Promise.resolve().then(c.bind(c,121)),Promise.resolve().then(c.bind(c,81502))},34769:(a,b,c)=>{Promise.resolve().then(c.bind(c,2131)),Promise.resolve().then(c.bind(c,5200))},38825:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>k,dynamic:()=>j,metadata:()=>i});var d=c(68108),e=c(99103),f=c(37922),g=c(97242),h=c(5200);c(54361),c(67018),c(95751);let i={referrer:"strict-origin-when-cross-origin",icons:{icon:[{url:"/favicon.ico",type:"image/svg+xml"}]},formatDetection:{email:!1,address:!1,telephone:!1}},j="force-dynamic";async function k({children:a}){return(await (0,f.oV)(g.A)).withCurrent(({config:b})=>(0,d.jsx)("html",{lang:"zh-CN",children:(0,d.jsx)("body",{children:(0,d.jsx)(e.Z,{children:(0,d.jsx)(h.default,{assetMountPath:b.rsc.assetMountPath,csrfToken:b.rsc.csrfToken,children:a})})})}))}},47113:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,30816,23)),Promise.resolve().then(c.t.bind(c,86955,23)),Promise.resolve().then(c.t.bind(c,61031,23)),Promise.resolve().then(c.t.bind(c,82922,23)),Promise.resolve().then(c.t.bind(c,78814,23)),Promise.resolve().then(c.t.bind(c,47898,23)),Promise.resolve().then(c.t.bind(c,5119,23)),Promise.resolve().then(c.t.bind(c,85706,23))},63788:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,95082,23))},67018:()=>{},76940:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,30816,23))},81502:(a,b,c)=>{"use strict";c.d(b,{default:()=>i});var d=c(17858),e=c(77394),f=c(66954),g=c(85947);function h(){return(0,d.jsx)("div",{"aria-hidden":"true","data-hile-rsc-initial-route":!0})}function i({assetMountPath:a,csrfToken:b,children:c}){return(0,d.jsx)(f.j,{serverFunctions:{headers:{"x-rsc-csrf-token":b}},children:(0,d.jsx)(e.jj,{assetMountPath:a,suspensePolicy:"host",renderError:(a,b,c)=>(0,d.jsxs)("section",{role:"alert","data-hile-rsc-error":b.referenceId,children:[(0,d.jsx)("p",{children:"插件组件暂时无法加载。"}),(0,d.jsx)("button",{type:"button",onClick:c,children:"重试"})]}),children:(0,d.jsx)(g.Suspense,{fallback:(0,d.jsx)(h,{}),children:c})})})}},95751:()=>{}};
@@ -1 +1 @@
1
- exports.id=448,exports.ids=[448],exports.modules={814:(a,b,c)=>{"use strict";c.d(b,{A:()=>h});var d=c(37922),e=c(93487),f=c(55733),g=c(99449);let h=(0,d.Pt)("zlooks.gateway.global-config-snapshot",async a=>{let[b,c]=await Promise.all([(0,d.oV)(f.A),(0,d.oV)(g.A)]),h=new e.P(b,{onError:a=>c.warn({err:a,event:"global-config.snapshot.rejected"},"Rejected global configuration snapshot")});return await h.start(),a(()=>h.close()),h})},15474:()=>{},32450:a=>{function b(a){return Promise.resolve().then(()=>{var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b})}b.keys=()=>[],b.resolve=b,b.id=32450,a.exports=b},37714:(a,b,c)=>{"use strict";c.d(b,{WA:()=>D,bE:()=>B,hT:()=>j,qM:()=>C,qe:()=>k,t1:()=>i});var d=c(73136),e=c(70349),f=c(62710),g=c(29951);let h="cn.zlooks.global.config.server",i=`${h}:site-presentation`,j=`${h}:site-profile`,k="__zlooks_global_config",l=f.Yj().regex(/^[a-z][a-z0-9._-]{0,127}$/),m=f.Yj().trim().min(1).max(160),n=f.Yj().min(1).max(2048).regex(/^\/(?!\/)[^\s]*$/),o=f.OZ().max(2048).refine(a=>{let b=new d.URL(a).protocol;return"http:"===b||"https:"===b}),p=f.gM("external",[f.re({id:l,label:m,href:n,external:f.eu(!1)}),f.re({id:l,label:m,href:o,external:f.eu(!0)})]),q=f.KC([n,o]).optional(),r=f.KC([n,o]).nullable().optional(),s=f.KC([n,o]).optional(),t=a=>new Set(a.map(a=>a.id)).size===a.length,u=f.re({identity:f.re({name:m,homeHref:n,backgroundVideoUrl:r,logoUrl:q,faviconUrl:q,description:f.Yj().trim().min(1).max(500).optional()}),linkGroups:f.YO(f.re({id:l,label:m,links:f.YO(p).max(32)})).max(16),legal:f.re({copyright:f.Yj().trim().min(1).max(320).optional(),registrations:f.YO(f.re({id:l,kind:f.k5(["icp","public-security","other"]),number:f.Yj().trim().min(1).max(320),verificationUrl:s,iconUrl:q})).max(8).refine(t,{message:"Registration IDs must be unique"})})}),v=f.re({schemaVersion:f.eu(2),revision:f.ai().int().min(0).max(Number.MAX_SAFE_INTEGER),value:u,updatedAt:g.w$({offset:!0}),updatedBy:f.Yj().trim().min(1).max(256)}),w=f.re({expectedRevision:f.ai().int().min(0).max(Number.MAX_SAFE_INTEGER),value:u});f.re({changeRequest:f.Yj().trim().min(1).max(2e3)});let x=f.re({profile:f.re({displayName:m,avatarUrl:q,headline:f.Yj().trim().min(1).max(240),biography:f.Yj().trim().min(1).max(2e3)}),topics:f.YO(f.re({id:l,name:m,summary:f.Yj().trim().min(1).max(500),href:s})).max(32).refine(t,{message:"Topic IDs must be unique"}),featuredLinks:f.YO(p).max(16).refine(t,{message:"Featured link IDs must be unique"})}),y=f.re({schemaVersion:f.eu(1),revision:f.ai().int().min(0).max(Number.MAX_SAFE_INTEGER),value:x,updatedAt:g.w$({offset:!0}),updatedBy:f.Yj().trim().min(1).max(256)}),z=f.re({expectedRevision:f.ai().int().min(0).max(Number.MAX_SAFE_INTEGER),value:x}),A=f.Yj().trim().min(1).max(256);function B(a){return(0,e.ol)(v.parse(a))}function C(a){return(0,e.ol)(y.parse(a))}function D(a){return JSON.stringify(B(a))}w.extend({actor:A}),z.extend({actor:A}),f.re({})},43811:()=>{},50781:(a,b,c)=>{"use strict";c.d(b,{E6:()=>g,Ih:()=>f,RW:()=>p,Sz:()=>v,lu:()=>w,vH:()=>s});var d=c(62710),e=c(29951);let f="zlooks.browser.cookies",g="zlooks.browser.client",h=d.Yj().regex(/^[a-z][a-z0-9]*(?:\.[a-z][a-z0-9]*)+$/),i=d.Yj().min(1).max(2048).regex(/^\/(?!\/)[^?#\s]*$/),j=e.w$({offset:!0}),k=d.Yj().regex(/^[A-Za-z][A-Za-z0-9_-]{0,127}$/),l=d.k5(["GET","POST","PUT","PATCH","DELETE"]),m=d.Yj().max(8192),n=d.re({code:d.eu(0),data:d.L5().refine(a=>void 0!==a)}).readonly(),o=d.re({code:d.ai().int().safe().refine(a=>0!==a),error:d.Yj().trim().min(1).max(500)}).readonly(),p=d.KC([n,o]);d.re({accept:m.optional(),"accept-language":m.optional(),"content-type":m.optional(),"if-modified-since":m.optional(),"if-none-match":m.optional(),origin:d.Yj().max(2048).optional(),range:m.optional(),referer:m.optional()}).readonly();let q=d.KC([d.Yj().max(512),d.YO(d.Yj().max(512)).max(20).readonly()]),r=d.g1(d.Yj().regex(/^[a-z][a-zA-Z0-9_-]{0,63}$/),q).refine(a=>Object.keys(a).length<=20,{message:"Browser API query has too many fields"}).readonly();d.g1(k,d.Yj().min(1).max(4096)).refine(a=>Object.keys(a).length<=8,{message:"Browser API context has too many cookies"}).readonly();let s=d.re({ipAddress:d.KC([d.uX(),d.ug()]),userAgent:d.Yj().trim().min(1).max(1024).nullable()}).readonly();d.re({method:l,path:i,origin:d.Yj().max(2048).optional(),clientKey:d.Yj().regex(/^[a-f0-9]{64}$/),query:r.optional(),body:d.L5().optional()}).readonly();let t=d.gM("action",[d.re({action:d.eu("set"),name:k,value:d.Yj().min(1).max(4096),expiresAt:j}),d.re({action:d.eu("clear"),name:k})]).readonly(),u=d.YO(t).max(8).refine(a=>new Set(a.map(a=>a.name)).size===a.length,"Cookie effects must target unique names").readonly();function v(a,b){return`/-/${h.parse(a)}${i.parse(b)}`}function w(a){return 0!==a.code}d.re({status:d.ai().int().min(200).max(599).refine(a=>a<300||a>=400),body:p,cookieEffects:u.optional()}).superRefine((a,b)=>{let c=a.status>=200&&a.status<300;!w(a.body)!==c&&b.addIssue({code:"custom",message:"HTTP status and browser API response code disagree",path:["body","code"]})}).readonly()},52124:()=>{},55733:(a,b,c)=>{"use strict";c.d(b,{A:()=>h});var d=c(37922),e=c(58188),f=c(69856),g=c(14571);let h=(0,d.Pt)("zlooks.gateway.application",async a=>{let b=(0,f.pj)({REGISTRY_HOST:process.env.REGISTRY_HOST,REGISTRY_PORT:process.env.REGISTRY_PORT}),c=(0,f.PE)(process.env.HILE_ADVERTISE_HOST),d=new e.lg({namespace:"cn.zlooks.gateway.server",registry:b,...c?{advertiseHost:c}:{}}),h=await (0,g.o0)();return a(await d.listen(h)),d})},58513:(a,b,c)=>{"use strict";c.d(b,{A:()=>h});var d=c(37922),e=c(93487),f=c(55733),g=c(99449);let h=(0,d.Pt)("zlooks.gateway.global-profile-snapshot",async a=>{let[b,c]=await Promise.all([(0,d.oV)(f.A),(0,d.oV)(g.A)]),h=new e.G(b,{onError:a=>c.warn({err:a,event:"global-profile.snapshot.rejected"},"Rejected global profile snapshot")});return await h.start(),a(()=>h.close()),h})},69856:(a,b,c)=>{"use strict";c.d(b,{PE:()=>h,pj:()=>i,fG:()=>j,ud:()=>m});var d=c(62710),e=c(35789);let f=d.Ik({REGISTRY_HOST:d.Yj().trim().min(1),REGISTRY_PORT:e.ai().int().min(1).max(65535)}),g=d.Yj().trim().min(1).optional();function h(a){return g.parse(a)}function i(a){let b=f.parse(a);return Object.freeze({host:b.REGISTRY_HOST,port:b.REGISTRY_PORT})}function j(a){let b=a.trim();if(!b||b.includes("/"))throw Error("Registry configuration key must be one non-empty path segment");return`registry:zlooks.cn/${b}`}var k=c(51142),l=c(48350);async function m(a,b){let c,d,e,f=Object.keys(b.sources);if(0===f.length)throw Error("At least one Registry configuration source is required");let g=Object.fromEntries(f.map(a=>[a,b.sources[a].topic])),h=await (0,k.wb)(a,{topics:g,required:f,onError:a=>n(b.onError,a)}),i=(0,l.IJ)(),j=!0,m=new Promise((a,b)=>{d=a,e=b}),o=setTimeout(()=>{e(Error("Registry configuration was not ready before the initial timeout"))},b.initialTimeoutMs??1e4),p=(0,k.f)(h.current,a=>{if(void 0!==a)try{let c=Object.fromEntries(f.map(c=>[c,b.sources[c].parse(a[c])]));i.value=b.compose(c),d()}catch(a){n(b.onError,a),void 0===i.value&&e(a)}},{immediate:!0}),q=()=>{if(c)return c;j&&(j=!1,p());let a=h.stop().catch(a=>{throw c=void 0,a});return c=a,a};try{await m}catch(a){throw await q().catch(()=>void 0),a}finally{clearTimeout(o)}return{current:i,snapshot(){let a=i.value;if(void 0===a)throw Error("Registry configuration is not ready");return a},close:q}}function n(a,b){try{Promise.resolve(a?.(b)).catch(()=>void 0)}catch{}}},70349:(a,b,c)=>{"use strict";c.d(b,{CY:()=>d,ol:()=>function a(b){if(null!==b&&"object"==typeof b&&!Object.isFrozen(b))for(let c of(Object.freeze(b),Object.values(b)))a(c);return b}});let d="zlooks_session"},86845:(a,b,c)=>{"use strict";c.d(b,{gV:()=>h,rL:()=>g});var d=c(18509),e=c(50781);let f="x-zlooks-internal-rsc-client-ip";function g(a){a.use(async(a,b)=>{a.request.headers[f]=a.ip,await b()})}function h(a){let b=a.get(f)?.trim(),c=a.get("user-agent")?.trim().slice(0,1024)||null;if(!b)return(0,d.eC)({});let g=e.vH.parse({ipAddress:b,userAgent:c});return(0,d.eC)({[e.E6]:g})}},93487:(a,b,c)=>{"use strict";c.d(b,{G:()=>g,P:()=>f});var d=c(37714);class e{#a;#b;#c;#d;#e;constructor(a,b,c,d,e={}){this.application=a,this.topic=b,this.parse=c,this.description=d,this.#a=e.initialTimeoutMs??1e4,this.#b=e.onError??(()=>void 0)}async start(){let a,b;if(this.#d)throw Error(`${this.description} snapshot source is already started`);let c=new Promise((c,d)=>{a=c,b=d}),d=setTimeout(()=>{b(Error(`${this.description} snapshot was not ready before the initial timeout`))},this.#a);try{this.#d=await this.application.subscribe(this.topic,c=>{try{this.#c=this.parse(c),a()}catch(a){this.#f(a),this.#c||b(a)}}),await c}catch(a){throw await this.close().catch(()=>void 0),a}finally{clearTimeout(d)}}snapshot(){let a=this.#c;if(!a)throw Error(`${this.description} snapshot is not ready`);return a}close(){let a=this.#e;if(a)return a;let b=this.#d;if(!b)return Promise.resolve();let c=Promise.resolve(b()).then(()=>{this.#d===b&&(this.#d=void 0)}).catch(a=>{throw this.#e=void 0,a});return this.#e=c,c}#f(a){try{Promise.resolve(this.#b(a)).catch(()=>void 0)}catch{}}}class f extends e{constructor(a,b={}){super(a,d.t1,d.bE,"Global configuration",b)}}class g extends e{constructor(a,b={}){super(a,d.hT,d.qM,"Global profile",b)}}},93980:()=>{},97242:(a,b,c)=>{"use strict";c.d(b,{A:()=>at});var d=c(37922),e=c(51142),f=c(22291);async function g(a,b="One or more cleanup actions failed"){let c=[];for(let b of a)if(b)try{await b()}catch(a){c.push(a)}if(c.length>0)throw AggregateError(c,b)}var h=c(57975);function i(a){let b=a.rsc.discovery;return{pollIntervalMs:b.pollIntervalMs,missingReconciliations:b.missingReconciliations,snapshotConcurrency:b.snapshotConcurrency}}var j=c(68333),k=c(7088),l=c(57278),m=c(77598),n=c(99079);class o{constructor(a,b){this.token=a,this.clientId=b}authenticate(a){var b,c;let d,e,f=a.headers.get("authorization"),g=`Bearer ${this.token}`;return f&&(b=f,c=g,d=Buffer.from(b),e=Buffer.from(c),d.length===e.length&&(0,m.timingSafeEqual)(d,e))?{token:this.token,clientId:this.clientId,scopes:[n.SS]}:new Response("Unauthorized",{status:401,headers:{"www-authenticate":"Bearer"}})}}var p=c(18509);class q{#g;#h;constructor(a,b,c){this.application=a,this.config=b,this.logger=c}get middleware(){let a=this.#h;if(!a)throw Error("MCP gateway is not ready");return a.middleware}inspect(){let a=this.#g;if(!a)throw Error("MCP gateway is not ready");return a.inspect()}async start(){if(this.#g)throw Error("MCP gateway is already mounted");try{let a=(0,l.H_)(this.application,{pollIntervalMs:this.config.pollIntervalMs,onError:a=>this.logger.error({err:a,event:"mcp.provider-discovery.failed"},"MCP provider discovery failed")}),b=await (0,j.r)({source:a,executionContext:a=>(0,p.eC)({requestId:(0,m.randomUUID)(),...a.authInfo?.clientId?{clientId:a.authInfo.clientId}:{}}),info:{name:"@zlooks.cn/gateway-server",version:"0.0.0"},instructions:"Capabilities are dynamically discovered from their owning internal Hile microservices. Before acting, inspect the current tool, resource, and prompt catalogs and their schemas; never invent a capability. Client-side search such as ToolSearch returns a filtered, possibly truncated subset, not the complete MCP tool catalog; never conclude that a tool does not exist solely because it is missing from a search result. If search results reach the requested limit or indicate truncation, increase the search limit within client-supported bounds or narrow the query to the exact provider-qualified tool name. Even fewer results do not prove completeness when the query is filtered. When a complete inventory is needed, enumerate tools/list and pass each returned nextCursor as cursor on the next request until nextCursor is absent. A client-side search limit is not a tools/list parameter. Stop and report incomplete discovery if a request fails or a cursor repeats. For clients with deferred tools, confirm that the required tool is activated and callable in the current run before invoking it; activation in a previous run does not guarantee availability in the current run. Use the exact callable name returned by the client, not a guessed alias. On Tool not found, first refresh the relevant catalog and rediscover or reactivate the exact tool in the current run before diagnosing server registration. If you cannot verify the complete authorized catalog, report that uncertainty rather than claiming the server does not expose the tool; do not bypass authentication or blindly retry a write whose outcome is unknown. For a multi-step workflow, prefer the owning provider's Prompt when one is available. A Prompt is guidance, not evidence that any action succeeded. Read current state before a write, obtain explicit user confirmation whenever the workflow requires it, invoke the Tool, and read the resulting state again before reporting success. An event-catalog Resource represents only the events owned by its currently discovered Provider; a Provider that is absent from the current MCP catalog contributes no available events. When creating or modifying a service, enumerate the complete Resource catalog and read every currently discovered event catalog before selecting event contracts or Consumer helpers. Refresh the event catalog before finalizing generated service code; if a required catalog disappeared or conflicts, stop and report the unavailable contract. Never infer an available event from an installed package, source-tree inventory, prior run, or conversation history.",startup:"allow-empty",invocationSecurity:{mode:"trusted-internal"},onError:a=>this.logger.error({err:a,event:"mcp.gateway.failed"},"MCP gateway failed")});this.#g=b;let c=new o(this.config.bearerToken,this.config.clientId);this.#h=(0,k.u)(b,{path:this.config.path,security:{allowedHostnames:this.config.allowedHostnames,allowedOriginHostnames:this.config.allowedOriginHostnames,authentication:{mode:"required",authenticate:a=>c.authenticate(a)}},legacy:"reject",onError:a=>this.logger.error({err:a,event:"mcp.http-transport.failed"},"MCP HTTP transport failed")})}catch(a){throw await this.close().catch(a=>{this.logger.error({err:a,event:"mcp.gateway.rollback-failed"},"MCP gateway rollback failed")}),a}}async close(){let a=this.#h,b=this.#g;await g([a?async()=>{await a.close(),this.#h===a&&(this.#h=void 0)}:void 0,b?async()=>{await b.close(),this.#g===b&&(this.#g=void 0)}:void 0],"MCP gateway cleanup failed")}}class r{#i;#j;#e;#k;constructor(a,b){this.config=a,this.mcp=b,this.#i=0,this.#j=!1}async use(a){if(this.#j)throw Error("Gateway runtime state is closing");this.#i+=1;try{return await a()}finally{this.#i-=1,0===this.#i&&this.#k?.()}}close(a){return this.#j=!0,this.#e??=this.#l(a).catch(a=>{throw this.#e=void 0,a}),this.#e}async #l(a){this.#i>0&&await this.#m(a),await this.mcp.close()}async #m(a){a?.aborted||await new Promise(b=>{let c=()=>{a?.removeEventListener("abort",c),this.#k=void 0,b()};this.#k=c,a?.addEventListener("abort",c,{once:!0})})}}class s{constructor(a){this.deployments=a}canDiscover(a){return this.#n(a)}canRender(a){return this.#n(a)}canInvoke(a){return this.#n(a)}#n(a){let b=this.deployments.getActive(a.pluginId);return b?.buildId===a.buildId}}var t=c(26147),u=c(80385),v=c(41815),w=c(16628);let x=new Map;class y{#o;#p;#q;constructor(a,b,c){this.readConfig=b,this.artifacts=new u.ui,this.deployments=new u.hv,this.#q=!0;const d=b().rsc;this.locator=(0,u.d5)(this.deployments,async b=>(0,v.$C)(a,b.namespace)),this.#o=new w.nR({context:(0,p.eC)({}),application:a,artifacts:this.artifacts,deployments:this.deployments,runtime:t.fr,pollIntervalMs:d.discovery.pollIntervalMs,missingReconciliations:d.discovery.missingReconciliations,snapshotConcurrency:d.discovery.snapshotConcurrency,generationHighWater:x,maxManifestBytes:d.transfer.maxManifestBytes,maxFileBytes:d.transfer.maxFileBytes,maxTotalBytes:d.transfer.maxTotalBytes,maxArtifactFiles:d.transfer.maxArtifactFiles,maxPathBytes:d.transfer.maxPathBytes,maxPathDepth:d.transfer.maxPathDepth,operationTimeoutMs:d.transfer.operationTimeoutMs,authorize:(0,w.iw)(),onRejected:(a,b)=>c.warn({err:b,event:"rsc.discovery.rejected",topic:a},"Rejected RSC discovery topic"),onError:a=>c.error({err:a,event:"rsc.discovery.failed"},"RSC discovery failed")}),this.#p=(0,u.Vh)((0,u.AG)(this.artifacts,(0,u.V9)(d.assetMountPath)))}async start(){await this.#o.start()}async close(){await g([()=>this.#o.close(),this.#q?()=>{this.#p(),this.#q=!1}:void 0],"RSC discovery cleanup failed")}}function z(a,b,c,d){let e=(0,u._U)({expectedOrigin:()=>d().public.origin,readToken:a=>{let b=a.headers?.["x-rsc-csrf-token"];return Array.isArray(b)?b[0]:b},verifyToken:a=>a===d().rsc.csrfToken}),f=(0,u.W4)({gateway:new u.ku({locator:b.locator,authorize:(a,b)=>c.canInvoke(a)&&e({pluginId:a.pluginId,buildId:a.buildId,actionId:a.referenceId,input:{}},b)})});(0,u.Kq)(a,{asset:(0,u.XH)({catalog:b.artifacts,mountPath:d().rsc.assetMountPath}),serverFunction:async(a,b)=>(a.requestContext={headers:a.headers},f(a,b))})}var A=c(86845),B=c(62710),C=c(29951);let D=B.Yj().regex(/^[a-z][a-z0-9.-]{0,127}$/),E=B.Yj().regex(/^[a-z][a-z0-9-]*(?:\.[a-z][a-z0-9-]*)+$/).max(256),F=B.Yj().min(1).max(512),G=B.Yj().min(1).max(256),H=B.Yj().min(1).max(1024).superRefine((a,b)=>{if(!a.startsWith("/")||a.startsWith("//")||a.includes("?")||a.includes("#"))return void b.addIssue({code:"custom",message:"Sitemap path must be one same-origin absolute path"});for(let c of a.split("/"))try{let a=decodeURIComponent(c);if("."===a||".."===a||/[\\/\x00-\x1f\x7f%]/.test(a))return void b.addIssue({code:"custom",message:"Sitemap path is ambiguous"})}catch{b.addIssue({code:"custom",message:"Sitemap path contains malformed escaping"});return}}),I=B.re({key:G,path:H,lastModified:C.w$({offset:!0}).nullable()}).readonly();B.re({cursor:F.optional()}).readonly(),B.re({}).readonly(),B.re({items:B.YO(I).max(1e3).readonly(),nextCursor:F.nullable()}).superRefine(({items:a},b)=>{new Set(a.map(({key:a})=>a)).size!==a.length&&b.addIssue({code:"custom",message:"Sitemap entry keys must be unique"}),new Set(a.map(({path:a})=>a)).size!==a.length&&b.addIssue({code:"custom",message:"Sitemap entry paths must be unique"})}).readonly(),B.re({protocol:B.eu("zlooks.sitemap-provider"),providerId:D,instanceId:B.uR(),namespace:E,operation:B.eu("/sitemap/entries"),scopePrefix:H.refine(a=>"/"===a||!a.endsWith("/"),"Sitemap Provider scope must not end with a slash"),issuedAt:B.ai().int().nonnegative(),expiresAt:B.ai().int().nonnegative()}).readonly();let J=B.re({xml:B.Yj().min(1).max(0x3200000),etag:B.Yj().regex(/^"[a-f0-9]{64}"$/),lastModified:C.w$({offset:!0}).nullable(),entryCount:B.ai().int().min(1).max(5e4)}).readonly();function K(a){return a.req.aborted||a.res.destroyed||a.res.writableEnded}let L=B.Yj().min(1).max(1024).regex(/^\/(?:[A-Za-z0-9._~!$&'()*+,;=:@%-]+\/?)*$/).refine(a=>a.split("/").every(a=>{try{let b=decodeURIComponent(a);return"."!==b&&".."!==b&&!/[\\/\x00-\x1f\x7f%]/.test(b)}catch{return!1}}),"Ambiguous URI path"),M=B.Yj().max(2048).regex(/^[\x20-\x7e\x80-\xff]*$/),N=B.re({accept:M.optional(),"accept-language":M.optional(),range:M.optional(),"if-range":M.optional(),"if-none-match":M.optional(),"if-match":M.optional(),"if-modified-since":M.optional(),"if-unmodified-since":M.optional(),origin:M.optional()}),O=Object.freeze(Object.keys(N.shape)),P=B.Yj().max(2048).regex(/^[\x20-\x7e\x80-\xff]*$/),Q=B.Yj().regex(/^(?:0|[1-9][0-9]*)$/).refine(a=>Number.isSafeInteger(Number(a))),R=B.re({status:B.ai().int().min(200).max(599),headers:B.re({"content-type":P.optional(),"content-length":Q.optional(),"content-disposition":P.optional(),"x-content-type-options":B.eu("nosniff").optional(),location:P.optional(),"cache-control":P.optional(),etag:P.regex(/^(?:W\/)?"[\x21\x23-\x7e\x80-\xff]*"$/).optional(),"last-modified":P.optional(),expires:P.optional(),"content-range":P.optional(),"accept-ranges":P.optional(),vary:P.optional(),"access-control-allow-origin":P.optional(),"access-control-expose-headers":P.optional(),"cross-origin-resource-policy":P.optional()}).refine(a=>16384>=Object.entries(a).reduce((a,[b,c])=>a+b.length+(c?.length??0),0))}).superRefine(({status:a,headers:b},c)=>{204===a&&void 0!==b["content-length"]&&c.addIssue({code:"custom",message:"204 must not contain Content-Length"}),205===a&&void 0!==b["content-length"]&&"0"!==b["content-length"]&&c.addIssue({code:"custom",message:"205 cannot contain a response body"})}),S="registry:zlooks.cn/public-assets/providers/",T=B.Yj().regex(/^[a-z][a-z0-9.-]{0,127}$/),U=B.re({protocol:B.eu("zlooks.public-asset"),providerId:T,instanceId:B.uR(),namespace:B.Yj().regex(/^[a-z][a-z0-9-]*(?:\.[a-z][a-z0-9-]*)+$/).max(256),operation:B.eu("/public-asset/read"),prefix:L.refine(a=>"/"!==a&&a.endsWith("/"),"A non-root directory prefix is required"),methods:B.YO(B.k5(["GET","HEAD"])).min(1).max(2).refine(a=>new Set(a).size===a.length),issuedAt:B.ai().int().nonnegative(),expiresAt:B.ai().int().nonnegative()}),V=B.re({method:B.k5(["GET","HEAD"]),path:L,headers:N.default({}),query:B.Yj().max(2048).optional()});class W{#r;#s;reconcile(a,b){let c=[...this.#r,...a];this.#s=c.filter(({announcement:a})=>b.has(a.providerId)).map(({announcement:a})=>a.prefix),this.#r=[...new Map([...a,...this.#r.filter(({announcement:a})=>b.has(a.providerId))].map(a=>[`${a.announcement.providerId}/${a.announcement.instanceId}`,a])).values()].slice(0,256)}resolve(a,b,c="GET"){if(this.#s.some(b=>a.startsWith(b)))return{status:"unavailable"};let d=this.#r.filter(({announcement:b})=>a.startsWith(b.prefix));if(!d.length)return{status:"none"};let e=d.filter(({announcement:a})=>a.expiresAt>b);return 1!==e.length?{status:"unavailable"}:e[0].announcement.methods.some(a=>a===c)?{status:"matched",peer:e[0]}:{status:"method-not-allowed",methods:e[0].announcement.methods}}constructor(){this.#r=[],this.#s=[]}}let X=B.re({host:B.Yj().min(1).max(253),port:B.ai().int().min(1).max(65535)});class Y{#t;#u;#v;#w;#x;#i;constructor(a,b={}){this.application=a,this.options=b,this.#t=new W,this.#v=new AbortController,this.#w=-1/0,this.#u=b.clock??Date.now}async start(){await this.refresh(),this.#v.signal.throwIfAborted(),this.#x||(this.#x=setInterval(()=>{this.refresh().catch(a=>this.options.onError?.(a))},1e3),this.#x.unref())}refresh(){if(this.#i)return this.#i;let a=this.poll();return this.#i=a,a.finally(()=>{this.#i=void 0}).catch(()=>void 0),a}resolve(a,b="GET"){let c=this.#t.resolve(a,this.#u(),b);return"none"===c.status?c:this.#v.signal.aborted||this.#u()-this.#w>3e4?{status:"unavailable"}:c}async close(){this.#v.abort(),this.#x&&clearInterval(this.#x),this.#x=void 0,await this.#i?.catch(()=>void 0)}async poll(){this.#v.signal.throwIfAborted();let a=await this.application.listRegistryTopicSnapshots(S,{signal:AbortSignal.any([this.#v.signal,AbortSignal.timeout(5e3)])});if(this.#v.signal.throwIfAborted(),a.length>256)throw Error("Public asset catalog limit exceeded");let b=this.#u(),c=[],d=new Set;for(let e of a)try{let a=U.parse(e.payload);if(!e.hasData||e.retained||1!==e.publisherCount||1!==e.publishers.length||e.topic!==`${S}${a.providerId}/${a.instanceId}`||a.issuedAt>b+1e3||a.expiresAt<=a.issuedAt||a.expiresAt-a.issuedAt>3e4)throw Error("Invalid live public asset announcement");c.push({announcement:a,address:X.parse(e.publishers[0])})}catch(b){let a=e.topic.slice(S.length).split("/")[0];e.topic.startsWith(S)&&a&&d.add(a),this.options.onRejected?.(e.topic,b)}this.#t.reconcile(c,d),this.#w=b}}var Z=c(57075),$=c(46466);async function*_(a,b){let c=0,d=0;for(;;){let e=await a.next();if(e.done)break;if(!Buffer.isBuffer(e.value)||!e.value.length||e.value.length>65536)throw Error("Invalid binary frame");if(++d>16384)throw Error("Transfer frame limit exceeded");if((c+=e.value.length)>0x4000000||void 0!==b&&c>b)throw Error("Transfer length exceeded");if(void 0!==b&&c===b){if(!(await a.next()).done)throw Error("Trailing response frame");yield e.value;return}yield e.value}if(void 0!==b&&c!==b)throw Error("Truncated binary transfer")}function aa(a,b){a.respond=!1,a.res.writeHead(b,{"content-length":"0","cache-control":"no-store"}),a.res.end()}function ab(){}class ac{#y;#z;#A;#B;#C;#D;#E;#F;#G;#H;#I;#J;constructor(a,b,c){this.#y=a,this.#z=b,this.#A=c.logger;const d=c.createRsc??((a,b)=>new y(a,b,c.logger)),e=c.createMcp??((a,b)=>new q(a,b,c.logger));this.#B=c.mountRsc??z,this.#C=c.mountRscBrowserContext??A.rL,this.rsc=d(a,()=>this.config),this.#D=c.createPublicAssets?.(a)??new Y(a,{onError:a=>this.#A.error({err:a,event:"public-asset.discovery.failed"},"Public transfer discovery failed"),onRejected:(a,b)=>this.#A.warn({err:b,topic:a,event:"public-asset.discovery.rejected"},"Public transfer announcement rejected")}),this.rscAccessPolicy=c.createRscAccessPolicy?.(this.rsc)??new s(this.rsc.deployments),this.#G=(0,f.Z)({debounceMs:c.debounceMs??100,create:async c=>{if(c.public.port!==b.public.port)throw Error("gateway.public.port requires a process restart");if(c.rsc.assetMountPath!==b.rsc.assetMountPath)throw Error("gateway.rsc.assetMountPath requires a process restart");if(!(0,h.isDeepStrictEqual)(c.rsc.transfer,b.rsc.transfer))throw Error("gateway.rsc.transfer requires a process restart");if(!(0,h.isDeepStrictEqual)(i(c),i(b)))throw Error("gateway.rsc.discovery runtime settings require a process restart");let d=e(a,c.mcp);return await d.start(),new r(c,d)},dispose:(a,b)=>a.close(b.signal),onError:(a,b)=>{this.#A.error({err:a,event:"gateway.runtime.reload-failed",stage:b.stage},"Gateway runtime reload failed")}})}get config(){return this.#G?.current()?.config??this.#z}async start(){try{await this.#K().update(this.#z),await this.#D.start(),await this.rsc.start()}catch(a){throw await this.close().catch(a=>{this.#A.error({err:a,event:"gateway.runtime.rollback-failed"},"Gateway runtime rollback failed")}),a}}async startHost(a){if(!this.#K().current())throw Error("Gateway runtime is not ready");if(this.#E||this.#H||this.#J)throw Error("Gateway public Host is already started or starting");this.#E=a,this.#L(a);let b=(async()=>{this.#J=await a.start()})();this.#H=b;try{await b}finally{this.#H===b&&(this.#H=void 0)}}stopHost(){let a=this.#I;if(a)return a;let b=this.#M();return this.#I=b,b.finally(()=>{this.#I===b&&(this.#I=void 0)}).catch(()=>void 0),b}async #M(){this.#F?.close(),await this.#H;let a=this.#J;a&&(await a(),this.#J===a&&(this.#J=void 0))}#L(a){var b,c,d,e,f;let g,h;this.#C(a),this.#B(a,this.rsc,this.rscAccessPolicy,()=>this.config),a.use((a,b)=>this.#N(c=>c.mcp.middleware(a,b))),b=this.#y,c=this.#A,a.use(async(a,d)=>{var e,f;let g,h;if("/sitemap.xml"!==a.path)return d();if("GET"!==a.method&&"HEAD"!==a.method){a.set("Allow","GET, HEAD"),a.set("Cache-Control","no-store"),a.body=null,a.status=405;return}if(K(a))return;let i=(e=a,g=new AbortController,h=()=>{g.signal.aborted||g.abort(Error("Public Sitemap request disconnected"))},e.req.once("aborted",h),e.res.once("close",h),K(e)&&h(),{controller:g,unbind:()=>{e.req.off("aborted",h),e.res.off("close",h)}});try{i.controller.signal.throwIfAborted();let c=(f=await b.call("cn.zlooks.sitemap","/sitemap/read",{},{context:(0,p.eC)({source:"cn.zlooks.gateway"}),timeout:2e3,retries:0,signal:i.controller.signal}),J.parse(f));if(K(a))return;!function(a,b){var c,d;if(a.set("Cache-Control","public, max-age=300, stale-while-revalidate=3600"),a.set("Content-Type","application/xml; charset=utf-8"),a.set("X-Content-Type-Options","nosniff"),a.set("ETag",b.etag),b.lastModified&&a.set("Last-Modified",new Date(b.lastModified).toUTCString()),c=a.get("if-none-match"),d=b.etag,c.split(",").some(a=>{let b=a.trim();return"*"===b||b===d||b===`W/${d}`})){a.body=null,a.status=304;return}a.body="HEAD"===a.method?null:b.xml,a.status=200}(a,c)}catch(b){if(i.controller.signal.aborted||K(a))return;c.error({err:b,event:"sitemap.http.failed"},"Sitemap HTTP projection failed"),a.set("Cache-Control","no-store"),a.set("Content-Type","text/plain; charset=utf-8"),a.set("Retry-After","60"),a.body="HEAD"===a.method?null:"Sitemap temporarily unavailable\n",a.status=503}finally{i.unbind()}}),this.#F=(d=this.#y,e={resolve:(a,b)=>["/api","/_next","/_hile","/-","/sitemap.xml",this.config.mcp.path,this.config.rsc.assetMountPath].some(b=>a===b||a.startsWith(`${b.replace(/\/$/,"")}/`))?{status:"none"}:this.#D.resolve(a,b)},f=this.#A,g=new Set,h=!1,a.use(async(a,b)=>{let c,i=e.resolve(a.path,a.method);if("none"===i.status)return b();if(h||g.size>=256||"unavailable"===i.status)return aa(a,503);if("method-not-allowed"===i.status)return a.set("Allow",i.methods.join(", ")),aa(a,405);let j=V.safeParse({method:a.method,path:a.path,query:a.querystring,headers:Object.fromEntries(O.flatMap(b=>{let c=a.get(b);return c?[[b,c]]:[]}))});if(!j.success)return aa(a,400);if(a.req.aborted||a.res.destroyed)return;let k=new AbortController,l=()=>k.abort(Error("Public transfer disconnected")),m=setTimeout(()=>k.abort(Error("Public transfer deadline exceeded")),6e4);m.unref(),g.add(k),a.req.once("aborted",l),a.res.once("close",l);try{var n,o;let b;(c=await d.streamPeer(i.peer.address,i.peer.announcement.operation,j.data,{context:(0,p.eC)({}),signal:k.signal,timeout:6e4,idleTimeout:1e4,window:1})).on("error",ab);let e=c[Symbol.asyncIterator](),f=await e.next();if(f.done)throw Error("Missing response head");let g=R.parse(f.value),h=(b=g.headers["content-length"],void 0===b?void 0:Number(b)),l=(n=j.data.method,o=g.status,"HEAD"!==n&&204!==o&&205!==o&&304!==o);if(l&&void 0!==h&&h>0x4000000)throw Error("Transfer size limit exceeded");if(!l||0===h){if(!(await e.next()).done)throw Error("Unexpected body for an empty response");k.signal.throwIfAborted(),a.respond=!1,a.res.writeHead(g.status,g.headers),a.res.end();return}k.signal.throwIfAborted(),a.respond=!1,a.res.writeHead(g.status,g.headers);let m=Z.Readable.from(_(e,h),{objectMode:!1,highWaterMark:65536});await (0,$.pipeline)(m,a.res,{signal:k.signal})}catch(b){a.req.aborted||a.res.destroyed||(f.error({err:b,event:"public-asset.transfer.failed",providerId:i.peer.announcement.providerId},"Public binary transfer failed"),a.res.headersSent?a.res.destroy():aa(a,502))}finally{clearTimeout(m),a.req.off("aborted",l),a.res.off("close",l),k.abort(),c?.destroy(),g.delete(k)}}),{close(){for(let a of(h=!0,g))a.abort(Error("Public transfer shutdown"))}})}async update(a){await this.#K().update(a)}async withCurrent(a){return this.#N(b=>a({application:this.#y,config:b.config,logger:this.#A,rsc:this.rsc,rscAccessPolicy:this.rscAccessPolicy}))}async close(){await g([()=>this.stopHost(),()=>this.#K().stop(),()=>this.#D.close(),()=>this.rsc.close()],"Gateway runtime cleanup failed")}async #N(a){let b=this.#K().current();if(!b)throw Error("Gateway runtime is not ready");return b.use(()=>a(b))}#K(){let a=this.#G;if(!a)throw Error("Gateway runtime reloader is not initialized");return a}}var ad=c(55733),ae=c(73136);let af=B.re({origin:B.OZ().refine(a=>{let b=new ae.URL(a);return["http:","https:"].includes(b.protocol)&&!b.username&&!b.password&&"/"===b.pathname&&!b.search&&!b.hash},"Public Host origin must be one canonical HTTP(S) origin")}).readonly();function ag(a){return af.parse(a)}var ah=c(69856),ai=c(70349);let aj=B.Yj().regex(/^[a-z][a-z0-9._-]{0,127}$/),ak=B.re({port:B.ai().int().min(1).max(65535),mcpBearerToken:B.Yj().min(16),mcpBearerClientId:aj.default("zlooks-admin-client")}),al=B.ai().int().positive().max(0x7fffffff),am=B.re({public:B.re({port:B.ai().int().min(1).max(65535),origin:B.OZ()}),rsc:B.re({assetMountPath:B.eu("/_hile/rsc/assets"),csrfToken:B.Yj().min(16),render:B.re({timeoutMs:al,idleTimeoutMs:al,window:B.ai().int().positive()}),transfer:B.re({maxManifestBytes:B.ai().int().positive(),maxFileBytes:B.ai().int().positive(),maxTotalBytes:B.ai().int().positive(),maxArtifactFiles:B.ai().int().positive(),maxPathBytes:B.ai().int().positive(),maxPathDepth:B.ai().int().positive(),operationTimeoutMs:al}),discovery:B.re({pollIntervalMs:al,missingReconciliations:B.ai().int().positive(),snapshotConcurrency:B.ai().int().positive()})}),mcp:B.re({path:B.eu("/mcp"),pollIntervalMs:al,bearerToken:B.Yj().min(16),clientId:aj,scopes:B.PV([B.eu(n.SS)]),allowedHostnames:B.YO(B.Yj().trim().min(1)).min(1),allowedOriginHostnames:B.YO(B.Yj().trim().min(1)).min(1)})}),an=a=>(0,ai.ol)(ak.parse(a));function ao(a){let b=ak.parse(a.gateway),c=ag(a.publicHost),d=new URL(c.origin).hostname;return(0,ai.ol)(am.parse({public:{port:b.port,origin:c.origin},rsc:{assetMountPath:"/_hile/rsc/assets",csrfToken:(0,m.createHmac)("sha256",b.mcpBearerToken).update("zlooks:gateway-rsc-csrf:v1").digest("base64url"),render:{timeoutMs:3e4,idleTimeoutMs:1e4,window:8},transfer:{maxManifestBytes:1048576,maxFileBytes:0x4000000,maxTotalBytes:0x10000000,maxArtifactFiles:4096,maxPathBytes:1024,maxPathDepth:32,operationTimeoutMs:3e4},discovery:{pollIntervalMs:500,missingReconciliations:3,snapshotConcurrency:16}},mcp:{path:"/mcp",pollIntervalMs:2e3,bearerToken:b.mcpBearerToken,clientId:b.mcpBearerClientId,scopes:[n.SS],allowedHostnames:[d],allowedOriginHostnames:[d]}}))}let ap=(0,d.Pt)("zlooks.gateway.config",async a=>{let b=await (0,d.oV)(ad.A),c=await (0,ah.ud)(b,{sources:{gateway:{topic:(0,ah.fG)("gateway"),parse:an},publicHost:{topic:(0,ah.fG)("public-host"),parse:ag}},compose:ao});return a(()=>c.close()),c});var aq=c(814),ar=c(58513),as=c(99449);let at=(0,d.Pt)("zlooks.gateway.runtime",async a=>{let[b,c,,,f]=await Promise.all([(0,d.oV)(ad.A),(0,d.oV)(ap),(0,d.oV)(aq.A),(0,d.oV)(ar.A),(0,d.oV)(as.A)]),g=new ac(b,c.snapshot(),{logger:f});await g.start();let h=(0,e.f)(c.current,async a=>{a&&await g.update(a)},{onError:a=>f.error({err:a,event:"gateway.config-update.failed"},"Gateway configuration update failed")});return a(async()=>{h(),await g.close()}),g})},99449:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(37922),e=c(2080);let f=(0,d.Pt)("zlooks.gateway.logger",async a=>{let{logger:b,teardown:c}=(0,e.h)({level:"info",pretty:!1});return a(c),b})}};
1
+ exports.id=448,exports.ids=[448],exports.modules={814:(a,b,c)=>{"use strict";c.d(b,{A:()=>h});var d=c(37922),e=c(93487),f=c(55733),g=c(99449);let h=(0,d.Pt)("zlooks.gateway.global-config-snapshot",async a=>{let[b,c]=await Promise.all([(0,d.oV)(f.A),(0,d.oV)(g.A)]),h=new e.P(b,{onError:a=>c.warn({err:a,event:"global-config.snapshot.rejected"},"Rejected global configuration snapshot")});return await h.start(),a(()=>h.close()),h})},15474:()=>{},32450:a=>{function b(a){return Promise.resolve().then(()=>{var b=Error("Cannot find module '"+a+"'");throw b.code="MODULE_NOT_FOUND",b})}b.keys=()=>[],b.resolve=b,b.id=32450,a.exports=b},37714:(a,b,c)=>{"use strict";c.d(b,{WA:()=>I,bE:()=>G,hT:()=>k,qM:()=>H,qe:()=>l,t1:()=>j});var d=c(73136),e=c(18948),f=c(70349),g=c(62710),h=c(29951);let i="cn.zlooks.global.config.server",j=`${i}:site-presentation`,k=`${i}:site-profile`,l="__zlooks_global_config",m=g.Yj().regex(/^[a-z][a-z0-9._-]{0,127}$/),n=g.Yj().trim().min(1).max(160),o=g.Yj().min(1).max(2048).regex(/^\/(?!\/)[^\s]*$/),p=g.OZ().max(2048).refine(a=>{let b=new d.URL(a).protocol;return"http:"===b||"https:"===b}),q=g.gM("external",[g.re({id:m,label:n,href:o,external:g.eu(!1)}),g.re({id:m,label:n,href:p,external:g.eu(!0)})]),r=g.KC([o,p]).optional(),s=g.KC([o,p]).nullable().optional(),t=g.KC([o,p]).optional(),u=a=>new Set(a.map(a=>a.id)).size===a.length,v=g.re({identity:g.re({name:n,homeHref:o,backgroundVideoUrl:s,logoUrl:r,faviconUrl:r,description:g.Yj().trim().min(1).max(500).optional()}),linkGroups:g.YO(g.re({id:m,label:n,links:g.YO(q).max(32)})).max(16),legal:g.re({copyright:g.Yj().trim().min(1).max(320).optional(),registrations:g.YO(g.re({id:m,kind:g.k5(["icp","public-security","other"]),number:g.Yj().trim().min(1).max(320),verificationUrl:t,iconUrl:r})).max(8).refine(u,{message:"Registration IDs must be unique"})})}),w=g.re({schemaVersion:g.eu(2),revision:g.ai().int().min(0).max(Number.MAX_SAFE_INTEGER),value:v,updatedAt:h.w$({offset:!0}),updatedBy:g.Yj().trim().min(1).max(256)}),x=g.re({expectedRevision:g.ai().int().min(0).max(Number.MAX_SAFE_INTEGER),value:v});g.re({changeRequest:g.Yj().trim().min(1).max(2e3)});let y=g.re({profile:g.re({displayName:n,avatarUrl:r,headline:g.Yj().trim().min(1).max(240),biography:g.Yj().trim().min(1).max(2e3)}),topics:g.YO(g.re({id:m,name:n,summary:g.Yj().trim().min(1).max(500),href:t})).max(32).refine(u,{message:"Topic IDs must be unique"}),featuredLinks:g.YO(q).max(16).refine(u,{message:"Featured link IDs must be unique"})}),z=g.re({schemaVersion:g.eu(1),revision:g.ai().int().min(0).max(Number.MAX_SAFE_INTEGER),value:y,updatedAt:h.w$({offset:!0}),updatedBy:g.Yj().trim().min(1).max(256)}),A=g.re({expectedRevision:g.ai().int().min(0).max(Number.MAX_SAFE_INTEGER),value:y}),B=g.Yj().trim().min(1).max(256),C=x.extend({actor:B}),D=A.extend({actor:B}),E=g.re({}),F=(0,e.AR)({namespace:i,operations:{readPresentation:{path:"/site-presentation/read",input:E,output:w},updatePresentation:{path:"/site-presentation/update",input:C,output:w},readProfile:{path:"/site-profile/read",input:E,output:z},updateProfile:{path:"/site-profile/update",input:D,output:z}}});function G(a){return(0,f.ol)(w.parse(a))}function H(a){return(0,f.ol)(z.parse(a))}function I(a){return JSON.stringify(G(a))}F.operations.readPresentation.path,F.operations.updatePresentation.path,F.operations.readProfile.path,F.operations.updateProfile.path},43811:()=>{},50781:(a,b,c)=>{"use strict";c.d(b,{E6:()=>g,Ih:()=>f,RW:()=>p,Sz:()=>v,lu:()=>w,vH:()=>s});var d=c(62710),e=c(29951);let f="zlooks.browser.cookies",g="zlooks.browser.client",h=d.Yj().regex(/^[a-z][a-z0-9]*(?:\.[a-z][a-z0-9]*)+$/),i=d.Yj().min(1).max(2048).regex(/^\/(?!\/)[^?#\s]*$/),j=e.w$({offset:!0}),k=d.Yj().regex(/^[A-Za-z][A-Za-z0-9_-]{0,127}$/),l=d.k5(["GET","POST","PUT","PATCH","DELETE"]),m=d.Yj().max(8192),n=d.re({code:d.eu(0),data:d.L5().refine(a=>void 0!==a)}).readonly(),o=d.re({code:d.ai().int().safe().refine(a=>0!==a),error:d.Yj().trim().min(1).max(500)}).readonly(),p=d.KC([n,o]);d.re({accept:m.optional(),"accept-language":m.optional(),"content-type":m.optional(),"if-modified-since":m.optional(),"if-none-match":m.optional(),origin:d.Yj().max(2048).optional(),range:m.optional(),referer:m.optional()}).readonly();let q=d.KC([d.Yj().max(512),d.YO(d.Yj().max(512)).max(20).readonly()]),r=d.g1(d.Yj().regex(/^[a-z][a-zA-Z0-9_-]{0,63}$/),q).refine(a=>Object.keys(a).length<=20,{message:"Browser API query has too many fields"}).readonly();d.g1(k,d.Yj().min(1).max(4096)).refine(a=>Object.keys(a).length<=8,{message:"Browser API context has too many cookies"}).readonly();let s=d.re({ipAddress:d.KC([d.uX(),d.ug()]),userAgent:d.Yj().trim().min(1).max(1024).nullable()}).readonly();d.re({method:l,path:i,origin:d.Yj().max(2048).optional(),clientKey:d.Yj().regex(/^[a-f0-9]{64}$/),query:r.optional(),body:d.L5().optional()}).readonly();let t=d.gM("action",[d.re({action:d.eu("set"),name:k,value:d.Yj().min(1).max(4096),expiresAt:j}),d.re({action:d.eu("clear"),name:k})]).readonly(),u=d.YO(t).max(8).refine(a=>new Set(a.map(a=>a.name)).size===a.length,"Cookie effects must target unique names").readonly();function v(a,b){return`/-/${h.parse(a)}${i.parse(b)}`}function w(a){return 0!==a.code}d.re({status:d.ai().int().min(200).max(599).refine(a=>a<300||a>=400),body:p,cookieEffects:u.optional()}).superRefine((a,b)=>{let c=a.status>=200&&a.status<300;!w(a.body)!==c&&b.addIssue({code:"custom",message:"HTTP status and browser API response code disagree",path:["body","code"]})}).readonly()},52124:()=>{},55733:(a,b,c)=>{"use strict";c.d(b,{A:()=>h});var d=c(37922),e=c(81908),f=c(69856),g=c(14571);let h=(0,d.Pt)("zlooks.gateway.application",async a=>{let b=(0,f.pj)({REGISTRY_HOST:process.env.REGISTRY_HOST,REGISTRY_PORT:process.env.REGISTRY_PORT}),c=(0,f.PE)(process.env.HILE_ADVERTISE_HOST),d=new e.lg({namespace:"cn.zlooks.gateway.server",registry:b,...c?{advertiseHost:c}:{}}),h=await (0,g.o0)();return a(await d.listen(h)),d})},58513:(a,b,c)=>{"use strict";c.d(b,{A:()=>h});var d=c(37922),e=c(93487),f=c(55733),g=c(99449);let h=(0,d.Pt)("zlooks.gateway.global-profile-snapshot",async a=>{let[b,c]=await Promise.all([(0,d.oV)(f.A),(0,d.oV)(g.A)]),h=new e.G(b,{onError:a=>c.warn({err:a,event:"global-profile.snapshot.rejected"},"Rejected global profile snapshot")});return await h.start(),a(()=>h.close()),h})},69856:(a,b,c)=>{"use strict";c.d(b,{PE:()=>h,pj:()=>i,fG:()=>j,ud:()=>m});var d=c(62710),e=c(35789);let f=d.Ik({REGISTRY_HOST:d.Yj().trim().min(1),REGISTRY_PORT:e.ai().int().min(1).max(65535)}),g=d.Yj().trim().min(1).optional();function h(a){return g.parse(a)}function i(a){let b=f.parse(a);return Object.freeze({host:b.REGISTRY_HOST,port:b.REGISTRY_PORT})}function j(a){let b=a.trim();if(!b||b.includes("/"))throw Error("Registry configuration key must be one non-empty path segment");return`registry:zlooks.cn/${b}`}var k=c(51142),l=c(48350);async function m(a,b){let c,d,e,f=Object.keys(b.sources);if(0===f.length)throw Error("At least one Registry configuration source is required");let g=Object.fromEntries(f.map(a=>[a,b.sources[a].topic])),h=await (0,k.wb)(a,{topics:g,required:f,onError:a=>n(b.onError,a)}),i=(0,l.IJ)(),j=!0,m=new Promise((a,b)=>{d=a,e=b}),o=setTimeout(()=>{e(Error("Registry configuration was not ready before the initial timeout"))},b.initialTimeoutMs??1e4),p=(0,k.f)(h.current,a=>{if(void 0!==a)try{let c=Object.fromEntries(f.map(c=>[c,b.sources[c].parse(a[c])]));i.value=b.compose(c),d()}catch(a){n(b.onError,a),void 0===i.value&&e(a)}},{immediate:!0}),q=()=>{if(c)return c;j&&(j=!1,p());let a=h.stop().catch(a=>{throw c=void 0,a});return c=a,a};try{await m}catch(a){throw await q().catch(()=>void 0),a}finally{clearTimeout(o)}return{current:i,snapshot(){let a=i.value;if(void 0===a)throw Error("Registry configuration is not ready");return a},close:q}}function n(a,b){try{Promise.resolve(a?.(b)).catch(()=>void 0)}catch{}}},70349:(a,b,c)=>{"use strict";c.d(b,{CY:()=>d,ol:()=>function a(b){if(null!==b&&"object"==typeof b&&!Object.isFrozen(b))for(let c of(Object.freeze(b),Object.values(b)))a(c);return b}});let d="zlooks_session"},86845:(a,b,c)=>{"use strict";c.d(b,{gV:()=>h,rL:()=>g});var d=c(18509),e=c(50781);let f="x-zlooks-internal-rsc-client-ip";function g(a){a.use(async(a,b)=>{a.request.headers[f]=a.ip,await b()})}function h(a){let b=a.get(f)?.trim(),c=a.get("user-agent")?.trim().slice(0,1024)||null;if(!b)return(0,d.eC)({});let g=e.vH.parse({ipAddress:b,userAgent:c});return(0,d.eC)({[e.E6]:g})}},93487:(a,b,c)=>{"use strict";c.d(b,{G:()=>g,P:()=>f});var d=c(37714);class e{#a;#b;#c;#d;#e;constructor(a,b,c,d,e={}){this.application=a,this.topic=b,this.parse=c,this.description=d,this.#a=e.initialTimeoutMs??1e4,this.#b=e.onError??(()=>void 0)}async start(){let a,b;if(this.#d)throw Error(`${this.description} snapshot source is already started`);let c=new Promise((c,d)=>{a=c,b=d}),d=setTimeout(()=>{b(Error(`${this.description} snapshot was not ready before the initial timeout`))},this.#a);try{this.#d=await this.application.subscribe(this.topic,c=>{try{this.#c=this.parse(c),a()}catch(a){this.#f(a),this.#c||b(a)}}),await c}catch(a){throw await this.close().catch(()=>void 0),a}finally{clearTimeout(d)}}snapshot(){let a=this.#c;if(!a)throw Error(`${this.description} snapshot is not ready`);return a}close(){let a=this.#e;if(a)return a;let b=this.#d;if(!b)return Promise.resolve();let c=Promise.resolve(b()).then(()=>{this.#d===b&&(this.#d=void 0)}).catch(a=>{throw this.#e=void 0,a});return this.#e=c,c}#f(a){try{Promise.resolve(this.#b(a)).catch(()=>void 0)}catch{}}}class f extends e{constructor(a,b={}){super(a,d.t1,d.bE,"Global configuration",b)}}class g extends e{constructor(a,b={}){super(a,d.hT,d.qM,"Global profile",b)}}},93980:()=>{},97242:(a,b,c)=>{"use strict";c.d(b,{A:()=>at});var d=c(37922),e=c(51142),f=c(22291);async function g(a,b="One or more cleanup actions failed"){let c=[];for(let b of a)if(b)try{await b()}catch(a){c.push(a)}if(c.length>0)throw AggregateError(c,b)}var h=c(57975);function i(a){let b=a.rsc.discovery;return{pollIntervalMs:b.pollIntervalMs,missingReconciliations:b.missingReconciliations,snapshotConcurrency:b.snapshotConcurrency}}var j=c(68333),k=c(7088),l=c(57278),m=c(77598),n=c(99079);class o{constructor(a,b){this.token=a,this.clientId=b}authenticate(a){var b,c;let d,e,f=a.headers.get("authorization"),g=`Bearer ${this.token}`;return f&&(b=f,c=g,d=Buffer.from(b),e=Buffer.from(c),d.length===e.length&&(0,m.timingSafeEqual)(d,e))?{token:this.token,clientId:this.clientId,scopes:[n.SS]}:new Response("Unauthorized",{status:401,headers:{"www-authenticate":"Bearer"}})}}var p=c(18509);class q{#g;#h;constructor(a,b,c){this.application=a,this.config=b,this.logger=c}get middleware(){let a=this.#h;if(!a)throw Error("MCP gateway is not ready");return a.middleware}inspect(){let a=this.#g;if(!a)throw Error("MCP gateway is not ready");return a.inspect()}async start(){if(this.#g)throw Error("MCP gateway is already mounted");try{let a=(0,l.H_)(this.application,{pollIntervalMs:this.config.pollIntervalMs,onError:a=>this.logger.error({err:a,event:"mcp.provider-discovery.failed"},"MCP provider discovery failed")}),b=await (0,j.r)({source:a,executionContext:a=>(0,p.eC)({requestId:(0,m.randomUUID)(),...a.authInfo?.clientId?{clientId:a.authInfo.clientId}:{}}),info:{name:"@zlooks.cn/gateway-server",version:"0.0.0"},instructions:"Capabilities are dynamically discovered from their owning internal Hile microservices. Before acting, inspect the current tool, resource, and prompt catalogs and their schemas; never invent a capability. Client-side search such as ToolSearch returns a filtered, possibly truncated subset, not the complete MCP tool catalog; never conclude that a tool does not exist solely because it is missing from a search result. If search results reach the requested limit or indicate truncation, increase the search limit within client-supported bounds or narrow the query to the exact provider-qualified tool name. Even fewer results do not prove completeness when the query is filtered. When a complete inventory is needed, enumerate tools/list and pass each returned nextCursor as cursor on the next request until nextCursor is absent. A client-side search limit is not a tools/list parameter. Stop and report incomplete discovery if a request fails or a cursor repeats. For clients with deferred tools, confirm that the required tool is activated and callable in the current run before invoking it; activation in a previous run does not guarantee availability in the current run. Use the exact callable name returned by the client, not a guessed alias. On Tool not found, first refresh the relevant catalog and rediscover or reactivate the exact tool in the current run before diagnosing server registration. If you cannot verify the complete authorized catalog, report that uncertainty rather than claiming the server does not expose the tool; do not bypass authentication or blindly retry a write whose outcome is unknown. For a multi-step workflow, prefer the owning provider's Prompt when one is available. A Prompt is guidance, not evidence that any action succeeded. Read current state before a write, obtain explicit user confirmation whenever the workflow requires it, invoke the Tool, and read the resulting state again before reporting success. An event-catalog Resource represents only the events owned by its currently discovered Provider; a Provider that is absent from the current MCP catalog contributes no available events. When creating or modifying a service, enumerate the complete Resource catalog and read every currently discovered event catalog before selecting event contracts or Consumer helpers. Refresh the event catalog before finalizing generated service code; if a required catalog disappeared or conflicts, stop and report the unavailable contract. Never infer an available event from an installed package, source-tree inventory, prior run, or conversation history.",startup:"allow-empty",invocationSecurity:{mode:"trusted-internal"},onError:a=>this.logger.error({err:a,event:"mcp.gateway.failed"},"MCP gateway failed")});this.#g=b;let c=new o(this.config.bearerToken,this.config.clientId);this.#h=(0,k.u)(b,{path:this.config.path,security:{allowedHostnames:this.config.allowedHostnames,allowedOriginHostnames:this.config.allowedOriginHostnames,authentication:{mode:"required",authenticate:a=>c.authenticate(a)}},legacy:"reject",onError:a=>this.logger.error({err:a,event:"mcp.http-transport.failed"},"MCP HTTP transport failed")})}catch(a){throw await this.close().catch(a=>{this.logger.error({err:a,event:"mcp.gateway.rollback-failed"},"MCP gateway rollback failed")}),a}}async close(){let a=this.#h,b=this.#g;await g([a?async()=>{await a.close(),this.#h===a&&(this.#h=void 0)}:void 0,b?async()=>{await b.close(),this.#g===b&&(this.#g=void 0)}:void 0],"MCP gateway cleanup failed")}}class r{#i;#j;#e;#k;constructor(a,b){this.config=a,this.mcp=b,this.#i=0,this.#j=!1}async use(a){if(this.#j)throw Error("Gateway runtime state is closing");this.#i+=1;try{return await a()}finally{this.#i-=1,0===this.#i&&this.#k?.()}}close(a){return this.#j=!0,this.#e??=this.#l(a).catch(a=>{throw this.#e=void 0,a}),this.#e}async #l(a){this.#i>0&&await this.#m(a),await this.mcp.close()}async #m(a){a?.aborted||await new Promise(b=>{let c=()=>{a?.removeEventListener("abort",c),this.#k=void 0,b()};this.#k=c,a?.addEventListener("abort",c,{once:!0})})}}class s{constructor(a){this.deployments=a}canDiscover(a){return this.#n(a)}canRender(a){return this.#n(a)}canInvoke(a){return this.#n(a)}#n(a){let b=this.deployments.getActive(a.pluginId);return b?.buildId===a.buildId}}var t=c(81866),u=c(37904),v=c(93932),w=c(27402);let x=new Map;class y{#o;#p;#q;constructor(a,b,c){this.readConfig=b,this.artifacts=new u.ui,this.deployments=new u.hv,this.#q=!0;const d=b().rsc;this.locator=(0,u.d5)(this.deployments,async b=>(0,v.$C)(a,b.namespace)),this.#o=new w.nR({context:(0,p.eC)({}),application:a,artifacts:this.artifacts,deployments:this.deployments,runtime:t.fr,pollIntervalMs:d.discovery.pollIntervalMs,missingReconciliations:d.discovery.missingReconciliations,snapshotConcurrency:d.discovery.snapshotConcurrency,generationHighWater:x,maxManifestBytes:d.transfer.maxManifestBytes,maxFileBytes:d.transfer.maxFileBytes,maxTotalBytes:d.transfer.maxTotalBytes,maxArtifactFiles:d.transfer.maxArtifactFiles,maxPathBytes:d.transfer.maxPathBytes,maxPathDepth:d.transfer.maxPathDepth,operationTimeoutMs:d.transfer.operationTimeoutMs,authorize:(0,w.iw)(),onRejected:(a,b)=>c.warn({err:b,event:"rsc.discovery.rejected",topic:a},"Rejected RSC discovery topic"),onError:a=>c.error({err:a,event:"rsc.discovery.failed"},"RSC discovery failed")}),this.#p=(0,u.Vh)((0,u.AG)(this.artifacts,(0,u.V9)(d.assetMountPath)))}async start(){await this.#o.start()}async close(){await g([()=>this.#o.close(),this.#q?()=>{this.#p(),this.#q=!1}:void 0],"RSC discovery cleanup failed")}}function z(a,b,c,d){let e=(0,u._U)({expectedOrigin:()=>d().public.origin,readToken:a=>{let b=a.headers?.["x-rsc-csrf-token"];return Array.isArray(b)?b[0]:b},verifyToken:a=>a===d().rsc.csrfToken}),f=(0,u.W4)({gateway:new u.ku({locator:b.locator,authorize:(a,b)=>c.canInvoke(a)&&e({pluginId:a.pluginId,buildId:a.buildId,actionId:a.referenceId,input:{}},b)})});(0,u.Kq)(a,{asset:(0,u.XH)({catalog:b.artifacts,mountPath:d().rsc.assetMountPath}),serverFunction:async(a,b)=>(a.requestContext={headers:a.headers},f(a,b))})}var A=c(86845),B=c(62710),C=c(29951);let D=B.Yj().regex(/^[a-z][a-z0-9.-]{0,127}$/),E=B.Yj().regex(/^[a-z][a-z0-9-]*(?:\.[a-z][a-z0-9-]*)+$/).max(256),F=B.Yj().min(1).max(512),G=B.Yj().min(1).max(256),H=B.Yj().min(1).max(1024).superRefine((a,b)=>{if(!a.startsWith("/")||a.startsWith("//")||a.includes("?")||a.includes("#"))return void b.addIssue({code:"custom",message:"Sitemap path must be one same-origin absolute path"});for(let c of a.split("/"))try{let a=decodeURIComponent(c);if("."===a||".."===a||/[\\/\x00-\x1f\x7f%]/.test(a))return void b.addIssue({code:"custom",message:"Sitemap path is ambiguous"})}catch{b.addIssue({code:"custom",message:"Sitemap path contains malformed escaping"});return}}),I=B.re({key:G,path:H,lastModified:C.w$({offset:!0}).nullable()}).readonly();B.re({cursor:F.optional()}).readonly(),B.re({}).readonly(),B.re({items:B.YO(I).max(1e3).readonly(),nextCursor:F.nullable()}).superRefine(({items:a},b)=>{new Set(a.map(({key:a})=>a)).size!==a.length&&b.addIssue({code:"custom",message:"Sitemap entry keys must be unique"}),new Set(a.map(({path:a})=>a)).size!==a.length&&b.addIssue({code:"custom",message:"Sitemap entry paths must be unique"})}).readonly(),B.re({protocol:B.eu("zlooks.sitemap-provider"),providerId:D,instanceId:B.uR(),namespace:E,operation:B.eu("/sitemap/entries"),scopePrefix:H.refine(a=>"/"===a||!a.endsWith("/"),"Sitemap Provider scope must not end with a slash"),issuedAt:B.ai().int().nonnegative(),expiresAt:B.ai().int().nonnegative()}).readonly();let J=B.re({xml:B.Yj().min(1).max(0x3200000),etag:B.Yj().regex(/^"[a-f0-9]{64}"$/),lastModified:C.w$({offset:!0}).nullable(),entryCount:B.ai().int().min(1).max(5e4)}).readonly();function K(a){return a.req.aborted||a.res.destroyed||a.res.writableEnded}let L=B.Yj().min(1).max(1024).regex(/^\/(?:[A-Za-z0-9._~!$&'()*+,;=:@%-]+\/?)*$/).refine(a=>a.split("/").every(a=>{try{let b=decodeURIComponent(a);return"."!==b&&".."!==b&&!/[\\/\x00-\x1f\x7f%]/.test(b)}catch{return!1}}),"Ambiguous URI path"),M=B.Yj().max(2048).regex(/^[\x20-\x7e\x80-\xff]*$/),N=B.re({accept:M.optional(),"accept-language":M.optional(),range:M.optional(),"if-range":M.optional(),"if-none-match":M.optional(),"if-match":M.optional(),"if-modified-since":M.optional(),"if-unmodified-since":M.optional(),origin:M.optional()}),O=Object.freeze(Object.keys(N.shape)),P=B.Yj().max(2048).regex(/^[\x20-\x7e\x80-\xff]*$/),Q=B.Yj().regex(/^(?:0|[1-9][0-9]*)$/).refine(a=>Number.isSafeInteger(Number(a))),R=B.re({status:B.ai().int().min(200).max(599),headers:B.re({"content-type":P.optional(),"content-length":Q.optional(),"content-disposition":P.optional(),"x-content-type-options":B.eu("nosniff").optional(),location:P.optional(),"cache-control":P.optional(),etag:P.regex(/^(?:W\/)?"[\x21\x23-\x7e\x80-\xff]*"$/).optional(),"last-modified":P.optional(),expires:P.optional(),"content-range":P.optional(),"accept-ranges":P.optional(),vary:P.optional(),"access-control-allow-origin":P.optional(),"access-control-expose-headers":P.optional(),"cross-origin-resource-policy":P.optional()}).refine(a=>16384>=Object.entries(a).reduce((a,[b,c])=>a+b.length+(c?.length??0),0))}).superRefine(({status:a,headers:b},c)=>{204===a&&void 0!==b["content-length"]&&c.addIssue({code:"custom",message:"204 must not contain Content-Length"}),205===a&&void 0!==b["content-length"]&&"0"!==b["content-length"]&&c.addIssue({code:"custom",message:"205 cannot contain a response body"})}),S="registry:zlooks.cn/public-assets/providers/",T=B.Yj().regex(/^[a-z][a-z0-9.-]{0,127}$/),U=B.re({protocol:B.eu("zlooks.public-asset"),providerId:T,instanceId:B.uR(),namespace:B.Yj().regex(/^[a-z][a-z0-9-]*(?:\.[a-z][a-z0-9-]*)+$/).max(256),operation:B.eu("/public-asset/read"),prefix:L.refine(a=>"/"!==a&&a.endsWith("/"),"A non-root directory prefix is required"),methods:B.YO(B.k5(["GET","HEAD"])).min(1).max(2).refine(a=>new Set(a).size===a.length),issuedAt:B.ai().int().nonnegative(),expiresAt:B.ai().int().nonnegative()}),V=B.re({method:B.k5(["GET","HEAD"]),path:L,headers:N.default({}),query:B.Yj().max(2048).optional()});class W{#r;#s;reconcile(a,b){let c=[...this.#r,...a];this.#s=c.filter(({announcement:a})=>b.has(a.providerId)).map(({announcement:a})=>a.prefix),this.#r=[...new Map([...a,...this.#r.filter(({announcement:a})=>b.has(a.providerId))].map(a=>[`${a.announcement.providerId}/${a.announcement.instanceId}`,a])).values()].slice(0,256)}resolve(a,b,c="GET"){if(this.#s.some(b=>a.startsWith(b)))return{status:"unavailable"};let d=this.#r.filter(({announcement:b})=>a.startsWith(b.prefix));if(!d.length)return{status:"none"};let e=d.filter(({announcement:a})=>a.expiresAt>b);return 1!==e.length?{status:"unavailable"}:e[0].announcement.methods.some(a=>a===c)?{status:"matched",peer:e[0]}:{status:"method-not-allowed",methods:e[0].announcement.methods}}constructor(){this.#r=[],this.#s=[]}}let X=B.re({host:B.Yj().min(1).max(253),port:B.ai().int().min(1).max(65535)});class Y{#t;#u;#v;#w;#x;#i;constructor(a,b={}){this.application=a,this.options=b,this.#t=new W,this.#v=new AbortController,this.#w=-1/0,this.#u=b.clock??Date.now}async start(){await this.refresh(),this.#v.signal.throwIfAborted(),this.#x||(this.#x=setInterval(()=>{this.refresh().catch(a=>this.options.onError?.(a))},1e3),this.#x.unref())}refresh(){if(this.#i)return this.#i;let a=this.poll();return this.#i=a,a.finally(()=>{this.#i=void 0}).catch(()=>void 0),a}resolve(a,b="GET"){let c=this.#t.resolve(a,this.#u(),b);return"none"===c.status?c:this.#v.signal.aborted||this.#u()-this.#w>3e4?{status:"unavailable"}:c}async close(){this.#v.abort(),this.#x&&clearInterval(this.#x),this.#x=void 0,await this.#i?.catch(()=>void 0)}async poll(){this.#v.signal.throwIfAborted();let a=await this.application.listRegistryTopicSnapshots(S,{signal:AbortSignal.any([this.#v.signal,AbortSignal.timeout(5e3)])});if(this.#v.signal.throwIfAborted(),a.length>256)throw Error("Public asset catalog limit exceeded");let b=this.#u(),c=[],d=new Set;for(let e of a)try{let a=U.parse(e.payload);if(!e.hasData||e.retained||1!==e.publisherCount||1!==e.publishers.length||e.topic!==`${S}${a.providerId}/${a.instanceId}`||a.issuedAt>b+1e3||a.expiresAt<=a.issuedAt||a.expiresAt-a.issuedAt>3e4)throw Error("Invalid live public asset announcement");c.push({announcement:a,address:X.parse(e.publishers[0])})}catch(b){let a=e.topic.slice(S.length).split("/")[0];e.topic.startsWith(S)&&a&&d.add(a),this.options.onRejected?.(e.topic,b)}this.#t.reconcile(c,d),this.#w=b}}var Z=c(57075),$=c(46466);async function*_(a,b){let c=0,d=0;for(;;){let e=await a.next();if(e.done)break;if(!Buffer.isBuffer(e.value)||!e.value.length||e.value.length>65536)throw Error("Invalid binary frame");if(++d>16384)throw Error("Transfer frame limit exceeded");if((c+=e.value.length)>0x4000000||void 0!==b&&c>b)throw Error("Transfer length exceeded");if(void 0!==b&&c===b){if(!(await a.next()).done)throw Error("Trailing response frame");yield e.value;return}yield e.value}if(void 0!==b&&c!==b)throw Error("Truncated binary transfer")}function aa(a,b){a.respond=!1,a.res.writeHead(b,{"content-length":"0","cache-control":"no-store"}),a.res.end()}function ab(){}class ac{#y;#z;#A;#B;#C;#D;#E;#F;#G;#H;#I;#J;constructor(a,b,c){this.#y=a,this.#z=b,this.#A=c.logger;const d=c.createRsc??((a,b)=>new y(a,b,c.logger)),e=c.createMcp??((a,b)=>new q(a,b,c.logger));this.#B=c.mountRsc??z,this.#C=c.mountRscBrowserContext??A.rL,this.rsc=d(a,()=>this.config),this.#D=c.createPublicAssets?.(a)??new Y(a,{onError:a=>this.#A.error({err:a,event:"public-asset.discovery.failed"},"Public transfer discovery failed"),onRejected:(a,b)=>this.#A.warn({err:b,topic:a,event:"public-asset.discovery.rejected"},"Public transfer announcement rejected")}),this.rscAccessPolicy=c.createRscAccessPolicy?.(this.rsc)??new s(this.rsc.deployments),this.#G=(0,f.Z)({debounceMs:c.debounceMs??100,create:async c=>{if(c.public.port!==b.public.port)throw Error("gateway.public.port requires a process restart");if(c.rsc.assetMountPath!==b.rsc.assetMountPath)throw Error("gateway.rsc.assetMountPath requires a process restart");if(!(0,h.isDeepStrictEqual)(c.rsc.transfer,b.rsc.transfer))throw Error("gateway.rsc.transfer requires a process restart");if(!(0,h.isDeepStrictEqual)(i(c),i(b)))throw Error("gateway.rsc.discovery runtime settings require a process restart");let d=e(a,c.mcp);return await d.start(),new r(c,d)},dispose:(a,b)=>a.close(b.signal),onError:(a,b)=>{this.#A.error({err:a,event:"gateway.runtime.reload-failed",stage:b.stage},"Gateway runtime reload failed")}})}get config(){return this.#G?.current()?.config??this.#z}async start(){try{await this.#K().update(this.#z),await this.#D.start(),await this.rsc.start()}catch(a){throw await this.close().catch(a=>{this.#A.error({err:a,event:"gateway.runtime.rollback-failed"},"Gateway runtime rollback failed")}),a}}async startHost(a){if(!this.#K().current())throw Error("Gateway runtime is not ready");if(this.#E||this.#H||this.#J)throw Error("Gateway public Host is already started or starting");this.#E=a,this.#L(a);let b=(async()=>{this.#J=await a.start()})();this.#H=b;try{await b}finally{this.#H===b&&(this.#H=void 0)}}stopHost(){let a=this.#I;if(a)return a;let b=this.#M();return this.#I=b,b.finally(()=>{this.#I===b&&(this.#I=void 0)}).catch(()=>void 0),b}async #M(){this.#F?.close(),await this.#H;let a=this.#J;a&&(await a(),this.#J===a&&(this.#J=void 0))}#L(a){var b,c,d,e,f;let g,h;this.#C(a),this.#B(a,this.rsc,this.rscAccessPolicy,()=>this.config),a.use((a,b)=>this.#N(c=>c.mcp.middleware(a,b))),b=this.#y,c=this.#A,a.use(async(a,d)=>{var e,f;let g,h;if("/sitemap.xml"!==a.path)return d();if("GET"!==a.method&&"HEAD"!==a.method){a.set("Allow","GET, HEAD"),a.set("Cache-Control","no-store"),a.body=null,a.status=405;return}if(K(a))return;let i=(e=a,g=new AbortController,h=()=>{g.signal.aborted||g.abort(Error("Public Sitemap request disconnected"))},e.req.once("aborted",h),e.res.once("close",h),K(e)&&h(),{controller:g,unbind:()=>{e.req.off("aborted",h),e.res.off("close",h)}});try{i.controller.signal.throwIfAborted();let c=(f=await b.call("cn.zlooks.sitemap","/sitemap/read",{},{context:(0,p.eC)({source:"cn.zlooks.gateway"}),timeout:2e3,retries:0,signal:i.controller.signal}),J.parse(f));if(K(a))return;!function(a,b){var c,d;if(a.set("Cache-Control","public, max-age=300, stale-while-revalidate=3600"),a.set("Content-Type","application/xml; charset=utf-8"),a.set("X-Content-Type-Options","nosniff"),a.set("ETag",b.etag),b.lastModified&&a.set("Last-Modified",new Date(b.lastModified).toUTCString()),c=a.get("if-none-match"),d=b.etag,c.split(",").some(a=>{let b=a.trim();return"*"===b||b===d||b===`W/${d}`})){a.body=null,a.status=304;return}a.body="HEAD"===a.method?null:b.xml,a.status=200}(a,c)}catch(b){if(i.controller.signal.aborted||K(a))return;c.error({err:b,event:"sitemap.http.failed"},"Sitemap HTTP projection failed"),a.set("Cache-Control","no-store"),a.set("Content-Type","text/plain; charset=utf-8"),a.set("Retry-After","60"),a.body="HEAD"===a.method?null:"Sitemap temporarily unavailable\n",a.status=503}finally{i.unbind()}}),this.#F=(d=this.#y,e={resolve:(a,b)=>["/api","/_next","/_hile","/-","/sitemap.xml",this.config.mcp.path,this.config.rsc.assetMountPath].some(b=>a===b||a.startsWith(`${b.replace(/\/$/,"")}/`))?{status:"none"}:this.#D.resolve(a,b)},f=this.#A,g=new Set,h=!1,a.use(async(a,b)=>{let c,i=e.resolve(a.path,a.method);if("none"===i.status)return b();if(h||g.size>=256||"unavailable"===i.status)return aa(a,503);if("method-not-allowed"===i.status)return a.set("Allow",i.methods.join(", ")),aa(a,405);let j=V.safeParse({method:a.method,path:a.path,query:a.querystring,headers:Object.fromEntries(O.flatMap(b=>{let c=a.get(b);return c?[[b,c]]:[]}))});if(!j.success)return aa(a,400);if(a.req.aborted||a.res.destroyed)return;let k=new AbortController,l=()=>k.abort(Error("Public transfer disconnected")),m=setTimeout(()=>k.abort(Error("Public transfer deadline exceeded")),6e4);m.unref(),g.add(k),a.req.once("aborted",l),a.res.once("close",l);try{var n,o;let b;(c=await d.streamPeer(i.peer.address,i.peer.announcement.operation,j.data,{context:(0,p.eC)({}),signal:k.signal,timeout:6e4,idleTimeout:1e4,window:1})).on("error",ab);let e=c[Symbol.asyncIterator](),f=await e.next();if(f.done)throw Error("Missing response head");let g=R.parse(f.value),h=(b=g.headers["content-length"],void 0===b?void 0:Number(b)),l=(n=j.data.method,o=g.status,"HEAD"!==n&&204!==o&&205!==o&&304!==o);if(l&&void 0!==h&&h>0x4000000)throw Error("Transfer size limit exceeded");if(!l||0===h){if(!(await e.next()).done)throw Error("Unexpected body for an empty response");k.signal.throwIfAborted(),a.respond=!1,a.res.writeHead(g.status,g.headers),a.res.end();return}k.signal.throwIfAborted(),a.respond=!1,a.res.writeHead(g.status,g.headers);let m=Z.Readable.from(_(e,h),{objectMode:!1,highWaterMark:65536});await (0,$.pipeline)(m,a.res,{signal:k.signal})}catch(b){a.req.aborted||a.res.destroyed||(f.error({err:b,event:"public-asset.transfer.failed",providerId:i.peer.announcement.providerId},"Public binary transfer failed"),a.res.headersSent?a.res.destroy():aa(a,502))}finally{clearTimeout(m),a.req.off("aborted",l),a.res.off("close",l),k.abort(),c?.destroy(),g.delete(k)}}),{close(){for(let a of(h=!0,g))a.abort(Error("Public transfer shutdown"))}})}async update(a){await this.#K().update(a)}async withCurrent(a){return this.#N(b=>a({application:this.#y,config:b.config,logger:this.#A,rsc:this.rsc,rscAccessPolicy:this.rscAccessPolicy}))}async close(){await g([()=>this.stopHost(),()=>this.#K().stop(),()=>this.#D.close(),()=>this.rsc.close()],"Gateway runtime cleanup failed")}async #N(a){let b=this.#K().current();if(!b)throw Error("Gateway runtime is not ready");return b.use(()=>a(b))}#K(){let a=this.#G;if(!a)throw Error("Gateway runtime reloader is not initialized");return a}}var ad=c(55733),ae=c(73136);let af=B.re({origin:B.OZ().refine(a=>{let b=new ae.URL(a);return["http:","https:"].includes(b.protocol)&&!b.username&&!b.password&&"/"===b.pathname&&!b.search&&!b.hash},"Public Host origin must be one canonical HTTP(S) origin")}).readonly();function ag(a){return af.parse(a)}var ah=c(69856),ai=c(70349);let aj=B.Yj().regex(/^[a-z][a-z0-9._-]{0,127}$/),ak=B.re({port:B.ai().int().min(1).max(65535),mcpBearerToken:B.Yj().min(16),mcpBearerClientId:aj.default("zlooks-admin-client")}),al=B.ai().int().positive().max(0x7fffffff),am=B.re({public:B.re({port:B.ai().int().min(1).max(65535),origin:B.OZ()}),rsc:B.re({assetMountPath:B.eu("/_hile/rsc/assets"),csrfToken:B.Yj().min(16),render:B.re({timeoutMs:al,idleTimeoutMs:al,window:B.ai().int().positive()}),transfer:B.re({maxManifestBytes:B.ai().int().positive(),maxFileBytes:B.ai().int().positive(),maxTotalBytes:B.ai().int().positive(),maxArtifactFiles:B.ai().int().positive(),maxPathBytes:B.ai().int().positive(),maxPathDepth:B.ai().int().positive(),operationTimeoutMs:al}),discovery:B.re({pollIntervalMs:al,missingReconciliations:B.ai().int().positive(),snapshotConcurrency:B.ai().int().positive()})}),mcp:B.re({path:B.eu("/mcp"),pollIntervalMs:al,bearerToken:B.Yj().min(16),clientId:aj,scopes:B.PV([B.eu(n.SS)]),allowedHostnames:B.YO(B.Yj().trim().min(1)).min(1),allowedOriginHostnames:B.YO(B.Yj().trim().min(1)).min(1)})}),an=a=>(0,ai.ol)(ak.parse(a));function ao(a){let b=ak.parse(a.gateway),c=ag(a.publicHost),d=new URL(c.origin).hostname;return(0,ai.ol)(am.parse({public:{port:b.port,origin:c.origin},rsc:{assetMountPath:"/_hile/rsc/assets",csrfToken:(0,m.createHmac)("sha256",b.mcpBearerToken).update("zlooks:gateway-rsc-csrf:v1").digest("base64url"),render:{timeoutMs:3e4,idleTimeoutMs:1e4,window:8},transfer:{maxManifestBytes:1048576,maxFileBytes:0x4000000,maxTotalBytes:0x10000000,maxArtifactFiles:4096,maxPathBytes:1024,maxPathDepth:32,operationTimeoutMs:3e4},discovery:{pollIntervalMs:500,missingReconciliations:3,snapshotConcurrency:16}},mcp:{path:"/mcp",pollIntervalMs:2e3,bearerToken:b.mcpBearerToken,clientId:b.mcpBearerClientId,scopes:[n.SS],allowedHostnames:[d],allowedOriginHostnames:[d]}}))}let ap=(0,d.Pt)("zlooks.gateway.config",async a=>{let b=await (0,d.oV)(ad.A),c=await (0,ah.ud)(b,{sources:{gateway:{topic:(0,ah.fG)("gateway"),parse:an},publicHost:{topic:(0,ah.fG)("public-host"),parse:ag}},compose:ao});return a(()=>c.close()),c});var aq=c(814),ar=c(58513),as=c(99449);let at=(0,d.Pt)("zlooks.gateway.runtime",async a=>{let[b,c,,,f]=await Promise.all([(0,d.oV)(ad.A),(0,d.oV)(ap),(0,d.oV)(aq.A),(0,d.oV)(ar.A),(0,d.oV)(as.A)]),g=new ac(b,c.snapshot(),{logger:f});await g.start();let h=(0,e.f)(c.current,async a=>{a&&await g.update(a)},{onError:a=>f.error({err:a,event:"gateway.config-update.failed"},"Gateway configuration update failed")});return a(async()=>{h(),await g.close()}),g})},99449:(a,b,c)=>{"use strict";c.d(b,{A:()=>f});var d=c(37922),e=c(2080);let f=(0,d.Pt)("zlooks.gateway.logger",async a=>{let{logger:b,teardown:c}=(0,e.h)({level:"info",pretty:!1});return a(c),b})}};
@@ -0,0 +1 @@
1
+ "use strict";exports.id=47,exports.ids=[47],exports.modules={5598:(a,b,c)=>{c.d(b,{l:()=>d});function d(a,b){return a.snapshot().filter(({state:a})=>"active"===a).map(({pluginId:a,buildId:c,namespace:d})=>{let e=b.get(a,c);if(!e)throw Error(`Active RSC plugin artifacts are missing: ${a}@${c}`);if(e.manifest.pluginId!==a||e.manifest.buildId!==c)throw Error(`RSC plugin artifact identity mismatch: ${a}@${c}`);return{pluginId:a,buildId:c,namespace:d,...void 0===e.manifest.metadata?{}:{metadata:structuredClone(e.manifest.metadata)}}}).sort((a,b)=>a.pluginId.localeCompare(b.pluginId))}},20696:(a,b,c)=>{c.d(b,{UL:()=>d.U,b3:()=>e.b});var d=c(98632),e=c(80393);c(65698)},51407:(a,b,c)=>{c.d(b,{p:()=>g});var d=c(16698);let e=Symbol.for("@hile/http-next/request-signals"),f=globalThis[e]??=new d.AsyncLocalStorage;function g(){return f.getStore()}},65698:(a,b,c)=>{let d=c(63033),e=c(29294),f=c(79148),g=c(14365),h=c(93808),i=c(31522),j=c(73684);c(14126);c(67297);new WeakMap;(0,g.createDedupedByCallsiteServerErrorLoggerDev)(function(a,b){let c=a?`Route "${a}" `:"This route ";return Object.defineProperty(Error(`${c}used ${b}. \`draftMode()\` returns a Promise and must be unwrapped with \`await\` or \`React.use()\` before accessing its properties. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`),"__NEXT_ERROR_CODE",{value:"E835",enumerable:!1,configurable:!0})})},80393:(a,b,c)=>{Object.defineProperty(b,"b",{enumerable:!0,get:function(){return m}});let d=c(44161),e=c(29294),f=c(63033),g=c(79148),h=c(93808),i=c(67297),j=c(14365),k=c(96558),l=c(73684);function m(){let a="headers",b=e.workAsyncStorage.getStore(),c=f.workUnitAsyncStorage.getStore();if(b){if(c&&!(0,k.isRequestApiAllowedInCurrentPhase)(c))throw Object.defineProperty(Error(`Route ${b.route} used \`headers()\` inside \`after()\` while rendering. This is not supported. If you need this data inside an \`after()\` callback, use \`headers()\` outside of the callback. See more info here: https://nextjs.org/docs/app/api-reference/functions/after`),"__NEXT_ERROR_CODE",{value:"E1378",enumerable:!1,configurable:!0});if(b.forceStatic)return o(d.HeadersAdapter.seal(new Headers({})));if(c)switch(c.type){case"cache":{let a=Object.defineProperty(Error(`Route ${b.route} used \`headers()\` inside "use cache". Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use \`headers()\` outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E833",enumerable:!1,configurable:!0});throw Error.captureStackTrace(a,m),(0,i.applyOwnerStack)(a),b.invalidDynamicUsageError??=a,a}case"unstable-cache":throw Object.defineProperty(Error(`Route ${b.route} used \`headers()\` inside a function cached with \`unstable_cache()\`. Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use \`headers()\` outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`),"__NEXT_ERROR_CODE",{value:"E838",enumerable:!1,configurable:!0});case"generate-static-params":throw Object.defineProperty(Error(`Route ${b.route} used \`headers()\` inside \`generateStaticParams\`. This is not supported because \`generateStaticParams\` runs at build time without an HTTP request. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`),"__NEXT_ERROR_CODE",{value:"E1134",enumerable:!1,configurable:!0})}if(b.dynamicShouldError)throw Object.defineProperty(new h.StaticGenBailoutError(`Route ${b.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`headers()\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E828",enumerable:!1,configurable:!0});if(c)switch(c.type){case"prerender":var j=b,p=c;let e=n.get(p);if(e)return e;let f=(0,i.makeRuntimeHangingPromise)(p.renderSignal,j.route,"`headers()`",p);return n.set(p,f),f;case"prerender-client":case"validation-client":let q="`headers`";throw Object.defineProperty(new l.InvariantError(`${q} must not be used within a client component. Next.js should be preventing ${q} from being included in client components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E1017",enumerable:!1,configurable:!0});case"prerender-ppr":return(0,g.postponeWithTracking)(b.route,a,c.dynamicTracking);case"prerender-legacy":return(0,g.throwToInterruptStaticGeneration)(a,b,c);case"prerender-runtime":{let{stagedRendering:a}=c;if(a)return a.delayUntilStage(i.RENDER_STAGES_BY_DATA_KIND.sessionData,"headers",c.headers);return o(c.headers)}case"private-cache":return o(c.headers);case"request":if((0,g.trackDynamicDataInDynamicRender)(c),c.asyncApiPromises)return c.asyncApiPromises.headers;return o(c.headers)}}(0,f.throwForMissingRequestStore)(a)}let n=new WeakMap;function o(a){let b=n.get(a);if(b)return b;let c=Promise.resolve(a);return n.set(a,c),c}(0,j.createDedupedByCallsiteServerErrorLoggerDev)(function(a,b){let c=a?`Route "${a}" `:"This route ";return Object.defineProperty(Error(`${c}used ${b}. \`headers()\` returns a Promise and must be unwrapped with \`await\` or \`React.use()\` before accessing its properties. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`),"__NEXT_ERROR_CODE",{value:"E836",enumerable:!1,configurable:!0})})},98632:(a,b,c)=>{Object.defineProperty(b,"U",{enumerable:!0,get:function(){return n}});let d=c(69828),e=c(29269),f=c(29294),g=c(63033),h=c(79148),i=c(93808),j=c(67297),k=c(14365),l=c(96558),m=c(73684);function n(){let a="cookies",b=f.workAsyncStorage.getStore(),c=g.workUnitAsyncStorage.getStore();if(b){if(c&&!(0,l.isRequestApiAllowedInCurrentPhase)(c))throw Object.defineProperty(Error(`Route ${b.route} used \`cookies()\` inside \`after()\` while rendering. This is not supported. If you need this data inside an \`after()\` callback, use \`cookies()\` outside of the callback. See more info here: https://nextjs.org/docs/app/api-reference/functions/after`),"__NEXT_ERROR_CODE",{value:"E1381",enumerable:!1,configurable:!0});if(b.forceStatic)return p(d.RequestCookiesAdapter.seal(new e.RequestCookies(new Headers({}))));if(b.dynamicShouldError)throw Object.defineProperty(new i.StaticGenBailoutError(`Route ${b.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`cookies()\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E849",enumerable:!1,configurable:!0});if(c)switch(c.type){case"cache":let f=Object.defineProperty(Error(`Route ${b.route} used \`cookies()\` inside "use cache". Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use \`cookies()\` outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache`),"__NEXT_ERROR_CODE",{value:"E831",enumerable:!1,configurable:!0});throw Error.captureStackTrace(f,n),(0,j.applyOwnerStack)(f),b.invalidDynamicUsageError??=f,f;case"unstable-cache":throw Object.defineProperty(Error(`Route ${b.route} used \`cookies()\` inside a function cached with \`unstable_cache()\`. Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use \`cookies()\` outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/app/api-reference/functions/unstable_cache`),"__NEXT_ERROR_CODE",{value:"E846",enumerable:!1,configurable:!0});case"generate-static-params":throw Object.defineProperty(Error(`Route ${b.route} used \`cookies()\` inside \`generateStaticParams\`. This is not supported because \`generateStaticParams\` runs at build time without an HTTP request. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`),"__NEXT_ERROR_CODE",{value:"E1123",enumerable:!1,configurable:!0});case"prerender":var k=b,q=c;let g=o.get(q);if(g)return g;let r=(0,j.makeRuntimeHangingPromise)(q.renderSignal,k.route,"`cookies()`",q);return o.set(q,r),r;case"prerender-client":case"validation-client":let s="`cookies`";throw Object.defineProperty(new m.InvariantError(`${s} must not be used within a Client Component. Next.js should be preventing ${s} from being included in Client Components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E1037",enumerable:!1,configurable:!0});case"prerender-ppr":return(0,h.postponeWithTracking)(b.route,a,c.dynamicTracking);case"prerender-legacy":return(0,h.throwToInterruptStaticGeneration)(a,b,c);case"prerender-runtime":{let{stagedRendering:a}=c;if(a)return a.delayUntilStage(j.RENDER_STAGES_BY_DATA_KIND.sessionData,"cookies",c.cookies);return p(c.cookies)}case"private-cache":return p(c.cookies);case"request":let t;if((0,h.trackDynamicDataInDynamicRender)(c),t=(0,d.areCookiesMutableInCurrentPhase)(c)?c.userspaceMutableCookies:c.cookies,!c.asyncApiPromises)return p(t);if(t===c.mutableCookies)return c.asyncApiPromises.mutableCookies;return c.asyncApiPromises.cookies}}(0,g.throwForMissingRequestStore)(a)}let o=new WeakMap;function p(a){let b=o.get(a);if(b)return b;let c=Promise.resolve(a);return o.set(a,c),c}(0,k.createDedupedByCallsiteServerErrorLoggerDev)(function(a,b){let c=a?`Route "${a}" `:"This route ";return Object.defineProperty(Error(`${c}used ${b}. \`cookies()\` returns a Promise and must be unwrapped with \`await\` or \`React.use()\` before accessing its properties. Learn more: https://nextjs.org/docs/messages/sync-dynamic-apis`),"__NEXT_ERROR_CODE",{value:"E830",enumerable:!1,configurable:!0})})}};