PageSourceSearch

https://viztext.com/_next/static/chunks/21_s6r9tsfv_0.js

js viztext.com collected 2026-10-09 22:41:37 UTC 70,264 bytes, 1 lines download raw bytes

1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,67036,8271,e=>{"use strict";var i=e.i(24433);function t(e){return e.replace(/\r\n|\r|\n/g," ")}function a(e){return e.replace(/"/g,"#quot;")}function r(e){return t(e).replace(/;/g,";")}function n(e){return e.replace(/[^\p{L}\p{N}_]/gu,"")||"C"}function o(e){switch(e){case"public":return"+";case"protected":return"#";case"private":return"-";default:return""}}function s(e){return e.replace(/</g,"~").replace(/>/g,"~").replace(/[{}]/g,"").replace(/[\r\n]+/g," ")}function l(e){if(!e)return"";let i=e.replace(/["\r\n]+/g,"").trim();return i?` "${i}"`:""}function d(e){return`"${e.replace(/"/g,"#quot;")}"`}function m(e){return e.trim().replace(/[^A-Za-z0-9_]+/g,"_")||"_"}let c={"1..1":"||--||","1..*":"||--o{","*..1":"}o--||","*..*":"}o--o{",unknown:"}o..o{"},y={"flow-signup":{en:"Sign-up with email verification",zh:"注册与邮箱验证"},"flow-checkout":{en:"Checkout & payment",zh:"下单结账"},"flow-cicd":{en:"CI/CD pipeline",zh:"CI/CD 流水线"},"flow-support-ticket":{en:"Support ticket triage",zh:"客服工单分级"},"flow-refund":{en:"Refund approval",zh:"退款审批"},"flow-login-2fa":{en:"Login with 2FA",zh:"登录与二次验证"},"flow-content-review":{en:"Content moderation",zh:"内容审核"},"flow-incident":{en:"Incident response",zh:"线上故障响应"}},p={"flow-signup":{nodes:[{id:"start",label:"Visitor opens sign-up",type:"start"},{id:"submitForm",label:"Submit email & password",type:"process"},{id:"isValid",label:"Fields valid?",type:"decision"},{id:"showErrors",label:"Show field errors",type:"process"},{id:"emailTaken",label:"Email already registered?",type:"decision"},{id:"offerLogin",label:"Offer login or reset",type:"process"},{id:"createAccount",label:"Create pending account",type:"process"},{id:"sendMail",label:"Send verification email",type:"process"},{id:"clicked",label:"Link clicked within 24h?",type:"decision"},{id:"expire",label:"Expire account, allow retry",type:"process"},{id:"activate",label:"Activate account",type:"process"},{id:"onboard",label:"Show onboarding",type:"process"},{id:"done",label:"Signed in",type:"end"},{id:"abandoned",label:"Not registered",type:"end"}],edges:[{id:"e1",from:"start",to:"submitForm"},{id:"e2",from:"submitForm",to:"isValid"},{id:"e3",from:"isValid",to:"showErrors",label:"no"},{id:"e4",from:"showErrors",to:"submitForm"},{id:"e5",from:"isValid",to:"emailTaken",label:"yes"},{id:"e6",from:"emailTaken",to:"offerLogin",label:"yes"},{id:"e7",from:"offerLogin",to:"abandoned"},{id:"e8",from:"emailTaken",to:"createAccount",label:"no"},{id:"e9",from:"createAccount",to:"sendMail"},{id:"e10",from:"sendMail",to:"clicked"},{id:"e11",from:"clicked",to:"expire",label:"no"},{id:"e12",from:"expire",to:"abandoned"},{id:"e13",from:"clicked",to:"activate",label:"yes"},{id:"e14",from:"activate",to:"onboard"},{id:"e15",from:"onboard",to:"done"}]},"flow-checkout":{nodes:[{id:"start",label:"Cart ready",type:"start"},{id:"signedIn",label:"Signed in?",type:"decision"},{id:"guestOrLogin",label:"Guest checkout or sign in",type:"process"},{id:"enterAddress",label:"Enter shipping address",type:"process"},{id:"shippable",label:"Ships to this address?",type:"decision"},{id:"pickAlt",label:"Suggest pickup or other address",type:"process"}
1,{id:"pickPayment",label:"Choose payment method",type:"process"},{id:"reserve",label:"Reserve stock",type:"process"},{id:"inStock",label:"All items in stock?",type:"decision"},{id:"splitOrder",label:"Split or drop unavailable items",type:"process"},{id:"charge",label:"Authorize payment",type:"process"},{id:"paid",label:"Payment authorized?",type:"decision"},{id:"retryPay",label:"Show failure, offer retry",type:"process"},{id:"placeOrder",label:"Create order",type:"process"},{id:"confirm",label:"Send confirmation email",type:"process"},{id:"done",label:"Order placed",type:"end"},{id:"abandoned",label:"Checkout abandoned",type:"end"}],edges:[{id:"e1",from:"start",to:"signedIn"},{id:"e2",from:"signedIn",to:"guestOrLogin",label:"no"},{id:"e3",from:"guestOrLogin",to:"enterAddress"},{id:"e4",from:"signedIn",to:"enterAddress",label:"yes"},{id:"e5",from:"enterAddress",to:"shippable"},{id:"e6",from:"shippable",to:"pickAlt",label:"no"},{id:"e7",from:"pickAlt",to:"enterAddress"},{id:"e8",from:"shippable",to:"pickPayment",label:"yes"},{id:"e9",from:"pickPayment",to:"reserve"},{id:"e10",from:"reserve",to:"inStock"},{id:"e11",from:"inStock",to:"splitOrder",label:"no"},{id:"e12",from:"splitOrder",to:"charge"},{id:"e13",from:"inStock",to:"charge",label:"yes"},{id:"e14",from:"charge",to:"paid"},{id:"e15",from:"paid",to:"retryPay",label:"no"},{id:"e16",from:"retryPay",to:"pickPayment"},{id:"e17",from:"retryPay",to:"abandoned"},{id:"e18",from:"paid",to:"placeOrder",label:"yes"},{id:"e19",from:"placeOrder",to:"confirm"},{id:"e20",from:"confirm",to:"done"}]},"flow-cicd":{nodes:[{id:"start",label:"Push to branch",type:"start"},{id:"install",label:"Install dependencies",type:"process"},{id:"lint",label:"Lint & typecheck",type:"process"},{id:"lintOk",label:"Static checks pass?",type:"decision"},{id:"failFast",label:"Fail fast, notify author",type:"process"},{id:"unit",label:"Run unit tests",type:"process"},{id:"unitOk",label:"Tests green?",type:"decision"},{id:"build",label:"Build artifact",type:"process"},{id:"e2e",label:"Run e2e on preview",type:"process"},{id:"e2eOk",label:"E2E green?",type:"decision"},{id:"isMain",label:"Branch is main?",type:"decision"},{id:"preview",label:"Publish preview URL",type:"process"},{id:"deployProd",label:"Deploy to production",type:"process"},{id:"smoke",label:"Smoke check production",type:"process"},{id:"healthy",label:"Healthy?",type:"decision"},{id:"rollback",label:"Roll back to previous",type:"process"},{id:"done",label:"Released",type:"end"},{id:"failed",label:"Pipeline failed",type:"end"}],edges:[{id:"e1",from:"start",to:"install"},{id:"e2",from:"install",to:"lint"},{id:"e3",from:"lint",to:"lintOk"},{id:"e4",from:"lintOk",to:"failFast",label:"no"},{id:"e5",from:"failFast",to:"failed"},{id:"e6",from:"lintOk",to:"unit",label:"yes"},{id:"e7",from:"unit",to:"unitOk"},{id:"e8",from:"unitOk",to:"failFast",label:"no"},{id:"e9",from:"unitOk",to:"build",label:"yes"},{id:"e10",from:"build",to:"e2e"},{id:"e11",from:"e2e",to:"e2eOk"},{id:"e12",from:"e2eOk",to:"failFast",label:"no"},{id:"e13",from:"e2eOk",to:"isMain",label:"yes"},{id:"e14",from:"isMain",to:"preview",label:"no"},{id:"e15",from:"preview",to:"done"},{id:"e16",from:"isMain",to:"deployProd",label:"yes"},{id:"e17",from:"deployProd",to:"smoke"},{id:"e18",from:"smoke",to:"healthy"},{id:"e19",from:"healthy",to:"rollback",label:"no"},{id:"e20",from:"rollback",to:"failed"},{id:"e21",from:"healthy",to:"done",label:"yes"}]},"flow-support-ticket":{nodes:[{id:"start",label:"Ticket submitted",type:"start"},{id:"autoClassify",label:"Auto-classify by topic",type:"process"},{id:"isOutage",label:"Matches known outage?",type:"decision"},{id:"attachIncident",label:"Attach to incident thread",type:"process"},{id:"kbMatch",label:"Help article matches?",type:"decision"},{id:"sendArticle",label:"Send article, ask if resolved",type:"process"},{id:"resolved",label:"Customer says resolved?",type:"decision"},{id:"isPaying",label:"Paid plan?",type:"decision"},{id:"queueStandard",label:"Standard queue",type:"process"},{id:"queuePriority",label:"Priority queue",type:"process"},{id:"agentReply",label:"Agent investigates & replies",type:"process"},{id:"needsEng",label:"Needs engineering?",type:"decision"},{id:"fileBug",label:"File bug, link ticket",type:"process"},{id:"waitFix",label:"Wait for fix, keep customer posted",type:"process"},{id:"close",label:"Close ticket & ask for rating",type:"process"},{id:"done",label:"Ticket closed",type:"end"}],edges:[{id:"e1",from:"start",to:"autoClassify"},{id:"e2",from:"autoClassify",to:"isOutage"},{id:"e3",from:"isOutage",to:"attachIncident",label:"yes"},{id:"e4",from:"attachIncident",to:"waitFix"},{id:"e5",from:"isOutage",to:"kbMatch",label:"no"},{id:"e6",from:"kbMatch",to:"sendArticle",label:"yes"},{id:"e7",from:"sendArticle",to:"resolved"},{id:"e8",from:"resolved",to:"close",label:"yes"},{id:"e9",from:"resolved",to:"isPaying",label:"no"},{id:"e10",from:"kbMatch",to:"isPaying",label:"no"},{id:"e11",from:"isPaying",to:"queueStandard",label:"no"},{id:"e12",from:"isPaying",to:"queuePriority",label:"yes"},{id:"e13",from:"queueStandard",to:"agentReply"},{id:"e14",from:"queuePriority",to:"agentReply"},{id:"e15",from:"agentReply",to:"needsEng"},{id:"e16",from:"needsEng",to:"fileBug",label:"yes"},{id:"e17",from:"fileBug",to:"waitFix"},{id:"e18",from:"waitFix",to:"close"},{id:"e19",from:"needsEng",to:"close",label:"no"},{id:"e20",from:"close",to:"done"}]},"flow-refund":{nodes:[{id:"start",label:"Refund requested",type:"start"},{id:"lookupOrder",label:"Look up order & payment",type:"process"},{id:"inWindow",label:"Within return window?",type:"decision"},{id:"checkException",label:"Review as goodwill exception",type:"process"},{id:"goodwillOk",label:"Exception approved?",type:"decision"},{id:"isDigital",label:"Digital goods?",type:"decision"},{id:"returnLabel",label:"Issue return label",type:"process"},{id:"received",label:"Item received & intact?",type:"decision"},{id:"partialOffer",label:"Offer partial refund",type:"process"},{id:"overThreshold",label:"Amount over approval limit?",type:"decision"},{id:"managerApprove",label:"Manager reviews",type:"process"},{id:"approved",label:"Approved?",type:"decision"},{id:"issueRefund",label:"Refund to original method",type:"process"},{id:"notify",label:"Notify customer & close case",type:"process"},{id:"reject",label:"Explain rejection",type:"process"},{id:"done",label:"Refunded",type:"end"},{id:"denied",label:"Request denied",type:"end"}],edges:[{id:"e1",from:"start",to:"lookupOrder"},{id:"e2",from:"lookupOrder",to:"inWindow"},{id:"e3",from:"inWindow",to:"checkException",label:"no"},{id:"e4",from:"checkException",to:"goodwillOk"},{id:"e5",from:"goodwillOk",to:"reject",label:"no"},{id:"e6",from:"reject",to:"denied"},{id:"e7",from:"goodwillOk",to:"isDigital",label:"yes"},{id:"e8",from:"inWindow",to:"isDigital",label:"yes"},{id:"e9",from:"isDigital",to:"overThreshold",label:"yes"},{id:"e10",from:"isDigital",to:"returnLabel",label:"no"},{id:"e11",from:"returnLabel",to:"received"},{id:"e12",from:"received",to:"partialOffer",label:"no"},{id:"e13",from:"partialOffer",to:"overThreshold"},{id:"e14",from:"received",to:"overThreshold",label:"yes"},{id:"e15",from:"overThreshold",to:"managerApprove",label:"yes"},{id:"e16",from:"managerApprove",to:"approved"},{id:"e17",from:"approved",to:"reject",label:"no"},{id:"e18",from:"approved",to:"issueRefund",label:"yes"},{id:"e19",from:"overThreshold",to:"issueRefund",label:"no"},{id:"e20",from:"issueRefund",to:"notify"},{id:"e21",from:"notify",to:"done"}]},"flow-login-2fa":{nodes:[{id:"start",label:"Open login page",type:"start"},{id:"enterCreds",label:"Enter email & password",type:"process"},{id:"credsOk",label:"Credentials correct?",type:"decision"},{id:"countFail",label:"Count failed attempt",type:"process"},{id:"tooMany",label:"Too many attempts?",type:"decision"},{id:"lockout",label:"Lock account, email owner",type:"process"},{id:"has2fa",label:"2FA enabled?",type:"decision"},{id:"sendCode",label:"Send one-time code",type:"process"},{id:"enterCode",label:"Enter code",type:"process"},{id:"codeOk",label:"Code valid & unexpired?",type:"decision"},{id:"newDevice",label:"New device?",type:"decision"},{id:"alertOwner",label:"Email new-device alert",type:"process"},{id:"issueSession",label:"Issue session cookie",type:"process"},{id:"done",label:"Signed in",type:"end"},{id:"blocked",label:"Access blocked",type:"end"}],edges:[{id:"e1",from:"start",to:"enterCreds"},{id:"e2",from:"enterCreds",to:"credsOk"},{id:"e3",from:"credsOk",to:"countFail",label:"no"},{id:"e4",from:"countFail",to:"tooMany"},{id:"e5",from:"tooMany",to:"lockout",label:"yes"},{id:"e6",from:"lockout",to:"blocked"},{id:"e7",from:"tooMany",to:"enterCreds",label:"no"},{id:"e8",from:"credsOk",to:"has2fa",label:"yes"},{id:"e9",from:"has2fa",to:"sendCode",label:"yes"},{id:"e10",from:"sendCode",to:"enterCode"},{id:"e11",from:"enterCode",to:"codeOk"},{id:"e12",from:"codeOk",to:"countFail",label:"no"},{id:"e13",from:"codeOk",to:"newDevice",label:"yes"},{id:"e14",from:"has2fa",to:"newDevice",label:"no"},{id:"e15",from:"newDevice",to:"alertOwner",label:"yes"},{id:"e16",from:"alertOwner",to:"issueSession"},{id:"e17",from:"newDevice",to:"issueSession",label:"no"},{id:"e18",from:"issueSession",to:"done"}]},"flow-content-review":{nodes:[{id:"start",label:"Post submitted",type:"start"},{id:"autoScan",label:"Automated policy scan",type:"process"}
1,{id:"clearlyBad",label:"Clear violation?",type:"decision"},{id:"autoRemove",label:"Remove & notify author",type:"process"},{id:"uncertain",label:"Score in grey zone?",type:"decision"},{id:"publish",label:"Publish immediately",type:"process"},{id:"queueHuman",label:"Queue for human review",type:"process"},{id:"reviewerDecides",label:"Reviewer reads in context",type:"process"},{id:"violates",label:"Violates policy?",type:"decision"},{id:"severe",label:"Severe or repeated?",type:"decision"},{id:"limitReach",label:"Limit reach, warn author",type:"process"},{id:"suspend",label:"Suspend account",type:"process"},{id:"appeal",label:"Author appeals?",type:"decision"},{id:"secondReview",label:"Second reviewer decides",type:"process"},{id:"live",label:"Post live",type:"end"},{id:"removed",label:"Post removed",type:"end"}],edges:[{id:"e1",from:"start",to:"autoScan"},{id:"e2",from:"autoScan",to:"clearlyBad"},{id:"e3",from:"clearlyBad",to:"autoRemove",label:"yes"},{id:"e4",from:"autoRemove",to:"appeal"},{id:"e5",from:"clearlyBad",to:"uncertain",label:"no"},{id:"e6",from:"uncertain",to:"publish",label:"no"},{id:"e7",from:"publish",to:"live"},{id:"e8",from:"uncertain",to:"queueHuman",label:"yes"},{id:"e9",from:"queueHuman",to:"reviewerDecides"},{id:"e10",from:"reviewerDecides",to:"violates"},{id:"e11",from:"violates",to:"publish",label:"no"},{id:"e12",from:"violates",to:"severe",label:"yes"},{id:"e13",from:"severe",to:"limitReach",label:"no"},{id:"e14",from:"limitReach",to:"removed"},{id:"e15",from:"severe",to:"suspend",label:"yes"},{id:"e16",from:"suspend",to:"removed"},{id:"e17",from:"appeal",to:"secondReview",label:"yes"},{id:"e18",from:"secondReview",to:"violates"},{id:"e19",from:"appeal",to:"removed",label:"no"}]},"flow-incident":{nodes:[{id:"start",label:"Alert fires",type:"start"},{id:"ack",label:"On-call acknowledges",type:"process"},{id:"realIssue",label:"Real user impact?",type:"decision"},{id:"tuneAlert",label:"Silence & tune the alert",type:"process"},{id:"declare",label:"Declare incident, open channel",type:"process"},{id:"sev",label:"Severity 1?",type:"decision"},{id:"pageLeads",label:"Page leads & post status page",type:"process"},{id:"recentDeploy",label:"Recent deploy suspected?",type:"decision"},{id:"rollback",label:"Roll back",type:"process"},{id:"mitigate",label:"Apply mitigation",type:"process"},{id:"recovered",label:"Metrics recovered?",type:"decision"},{id:"escalate",label:"Escalate to subject expert",type:"process"},{id:"monitor",label:"Monitor for 30 minutes",type:"process"},{id:"postmortem",label:"Write postmortem & actions",type:"process"},{id:"done",label:"Incident closed",type:"end"},{id:"noop",label:"No incident",type:"end"}],edges:[{id:"e1",from:"start",to:"ack"},{id:"e2",from:"ack",to:"realIssue"},{id:"e3",from:"realIssue",to:"tuneAlert",label:"no"},{id:"e4",from:"tuneAlert",to:"noop"},{id:"e5",from:"realIssue",to:"declare",label:"yes"},{id:"e6",from:"declare",to:"sev"},{id:"e7",from:"sev",to:"pageLeads",label:"yes"},{id:"e8",from:"pageLeads",to:"recentDeploy"},{id:"e9",from:"sev",to:"recentDeploy",label:"no"},{id:"e10",from:"recentDeploy",to:"rollback",label:"yes"},{id:"e11",from:"rollback",to:"recovered"},{id:"e12",from:"recentDeploy",to:"mitigate",label:"no"},{id:"e13",from:"mitigate",to:"recovered"},{id:"e14",from:"recovered",to:"escalate",label:"no"},{id:"e15",from:"escalate",to:"mitigate"},{id:"e16",from:"recovered",to:"monitor",label:"yes"},{id:"e17",from:"monitor",to:"postmortem"},{id:"e18",from:"postmortem",to:"done"}]}},u={"seq-oauth":{en:"OAuth 2.0 sign-in",zh:"OAuth 2.0 登录"},"seq-checkout":{en:"Checkout & payment callback",zh:"下单与支付回调"},"seq-api-cache":{en:"Cached API read",zh:"带缓存的接口读取"},"seq-password-reset":{en:"Password reset",zh:"找回密码"},"seq-fulfillment":{en:"Order fulfillment across services",zh:"订单履约(多服务)"},"seq-file-upload":{en:"Direct file upload",zh:"文件直传对象存储"},"seq-webhook-retry":{en:"Webhook delivery & retry",zh:"Webhook 投递与重试"},"seq-chat-message":{en:"Chat message delivery",zh:"即时消息投递"}},b={"seq-oauth":{actors:[{id:"user",label:"User"},{id:"app",label:"Your app"},{id:"browser",label:"Browser"},{id:"idp",label:"Identity provider"},{id:"api",label:"Your API"}],events:[{id:"m1",from:"user",to:"app",action:"Click 'Sign in with Google'",sync:"sync"},{id:"m2",from:"app",to:"browser",action:"Redirect to authorize URL",sync:"sync"},{id:"m3",from:"browser",to:"idp",action:"GET /authorize (client_id, scope, state)",sync:"sync"},{id:"m4",from:"idp",to:"user",action:"Show consent screen",sync:"sync"}
1,{id:"m5",from:"user",to:"idp",action:"Approve access",sync:"sync"},{id:"m6",from:"idp",to:"browser",action:"Redirect to callback with code",sync:"async"},{id:"m7",from:"browser",to:"api",action:"GET /callback?code&state",sync:"sync"},{id:"m8",from:"api",to:"api",action:"Verify state matches session",sync:"sync"},{id:"m9",from:"api",to:"idp",action:"POST /token (code, client_secret)",sync:"sync"},{id:"m10",from:"idp",to:"api",action:"access_token + id_token",sync:"async"},{id:"m11",from:"api",to:"api",action:"Verify id_token signature",sync:"sync"},{id:"m12",from:"api",to:"api",action:"Find or create user record",sync:"sync"},{id:"m13",from:"api",to:"browser",action:"Set session cookie, redirect home",sync:"async"},{id:"m14",from:"browser",to:"user",action:"Signed in",sync:"async"}]},"seq-checkout":{actors:[{id:"user",label:"Shopper"},{id:"web",label:"Storefront"},{id:"orders",label:"Order service"},{id:"stock",label:"Inventory"},{id:"psp",label:"Payment provider"},{id:"mail",label:"Email service"}],events:[{id:"m1",from:"user",to:"web",action:"Place order",sync:"sync"},{id:"m2",from:"web",to:"orders",action:"POST /orders (cart, address)",sync:"sync"},{id:"m3",from:"orders",to:"stock",action:"Reserve items",sync:"sync"},{id:"m4",from:"stock",to:"orders",action:"Reservation id (holds 15 min)",sync:"async"},{id:"m5",from:"orders",to:"orders",action:"Create order in state PENDING",sync:"sync"},{id:"m6",from:"orders",to:"psp",action:"Create payment intent",sync:"sync"},{id:"m7",from:"psp",to:"orders",action:"Intent id + client secret",sync:"async"},{id:"m8",from:"orders",to:"web",action:"Order id + client secret",sync:"async"},{id:"m9",from:"web",to:"psp",action:"Confirm card payment",sync:"sync"},{id:"m10",from:"psp",to:"user",action:"3-D Secure challenge",sync:"sync"},{id:"m11",from:"user",to:"psp",action:"Approve in bank app",sync:"sync"},{id:"m12",from:"psp",to:"orders",action:"Webhook payment_intent.succeeded",sync:"async"},{id:"m13",from:"orders",to:"orders",action:"Mark order PAID",sync:"sync"},{id:"m14",from:"orders",to:"stock",action:"Commit reservation",sync:"async"},{id:"m15",from:"orders",to:"mail",action:"Send confirmation",sync:"async"},{id:"m16",from:"web",to:"user",action:"Show order confirmation",sync:"async"}]},"seq-api-cache":{actors:[{id:"client",label:"Client"},{id:"cdn",label:"CDN edge"},{id:"api",label:"API server"},{id:"cache",label:"Redis"},{id:"db",label:"Database"}],events:[{id:"m1",from:"client",to:"cdn",action:"GET /products/42",sync:"sync"},{id:"m2",from:"cdn",to:"cdn",action:"Check edge cache (miss)",sync:"sync"},{id:"m3",from:"cdn",to:"api",action:"Forward request",sync:"sync"},{id:"m4",from:"api",to:"cache",action:"GET product:42",sync:"sync"},{id:"m5",from:"cache",to:"api",action:"nil (cache miss)",sync:"async"},{id:"m6",from:"api",to:"db",action:"SELECT product + stock",sync:"sync"},{id:"m7",from:"db",to:"api",action:"Row data",sync:"async"},{id:"m8",from:"api",to:"cache",action:"SETEX product:42 ttl=60s",sync:"async"},{id:"m9",from:"api",to:"cdn",action:"200 + Cache-Control: s-maxage=60",sync:"async"},{id:"m10",from:"cdn",to:"cdn",action:"Store in edge cache",sync:"sync"},{id:"m11",from:"cdn",to:"client",action:"200 product JSON",sync:"async"},{id:"m12",from:"client",to:"cdn",action:"GET /products/42 (again)",sync:"sync"},{id:"m13",from:"cdn",to:"client",action:"200 from edge, no origin hit",sync:"async"}]},"seq-password-reset":{actors:[{id:"user",label:"User"},{id:"web",label:"Web app"},{id:"api",label:"Auth API"},{id:"db",label:"Database"},{id:"mail",label:"Email service"}],events:[{id:"m1",from:"user",to:"web",action:"Click 'Forgot password'",sync:"sync"},{id:"m2",from:"user",to:"web",action:"Enter email address",sync:"sync"},{id:"m3",from:"web",to:"api",action:"POST /password/forgot",sync:"sync"},{id:"m4",from:"api",to:"db",action:"Find user by email",sync:"sync"},{id:"m5",from:"db",to:"api",action:"User row or nothing",sync:"async"},{id:"m6",from:"api",to:"db",action:"Store single-use token (1h TTL)",sync:"sync"},{id:"m7",from:"api",to:"mail",action:"Send reset link",sync:"async"},{id:"m8",from:"api",to:"web",action:"202 (same reply whether or not the email exists)",sync:"async"},{id:"m9",from:"mail",to:"user",action:"Reset email",sync:"async"},{id:"m10",from:"user",to:"web",action:"Open link, enter new password",sync:"sync"},{id:"m11",from:"web",to:"api",action:"POST /password/reset (token, password)",sync:"sync"},{id:"m12",from:"api",to:"db",action:"Validate token, check not used or expired",sync:"sync"},{id:"m13",from:"api",to:"db",action:"Store password hash, burn token",sync:"sync"},{id:"m14",from:"api",to:"db",action:"Revoke all existing sessions",sync:"sync"},{id:"m15",from:"api",to:"mail",action:"Send 'password changed' notice",sync:"async"},{id:"m16",from:"api",to:"web",action:"200 — ask user to sign in",sync:"async"}]},"seq-fulfillment":{actors:[{id:"orders",label:"Order service"},{id:"bus",label:"Event bus"},{id:"warehouse",label:"Warehouse"},{id:"shipping",label:"Shipping"},{id:"notify",label:"Notification service"},{id:"customer",label:"Customer"}],events:[{id:"m1",from:"orders",to:"bus",action:"Publish OrderPaid",sync:"async"},{id:"m2",from:"bus",to:"warehouse",action:"Deliver OrderPaid",sync:"async"},{id:"m3",from:"warehouse",to:"warehouse",action:"Create pick list",sync:"sync"},{id:"m4",from:"warehouse",to:"bus",action:"Publish ItemsPicked",sync:"async"},{id:"m5",from:"bus",to:"shipping",action:"Deliver ItemsPicked",sync:"async"},{id:"m6",from:"shipping",to:"shipping",action:"Buy label from carrier",sync:"sync"},{id:"m7",from:"shipping",to:"bus",action:"Publish ShipmentCreated (tracking no.)",sync:"async"},{id:"m8",from:"bus",to:"orders",action:"Deliver ShipmentCreated",sync:"async"},{id:"m9",from:"orders",to:"orders",action:"Move order to SHIPPED",sync:"sync"},{id:"m10",from:"bus",to:"notify",action:"Deliver ShipmentCreated",sync:"async"},{id:"m11",from:"notify",to:"customer",action:"Email tracking number",sync:"async"},{id:"m12",from:"shipping",to:"bus",action:"Publish DeliveryConfirmed",sync:"async"},{id:"m13",from:"bus",to:"orders",action:"Deliver DeliveryConfirmed",sync:"async"},{id:"m14",from:"orders",to:"orders",action:"Close order",sync:"sync"}]},"seq-file-upload":{actors:[{id:"user",label:"User"},{id:"web",label:"Web app"},{id:"api",label:"API server"},{id:"store",label:"Object storage"},{id:"worker",label:"Processing worker"}],events:[{id:"m1",from:"user",to:"web",action:"Pick a file",sync:"sync"},{id:"m2",from:"web",to:"api",action:"POST /uploads (name, size, type)",sync:"sync"},{id:"m3",from:"api",to:"api",action:"Check quota and file type",sync:"sync"},{id:"m4",from:"api",to:"store",action:"Create presigned PUT URL",sync:"sync"},{id:"m5",from:"store",to:"api",action:"Presigned URL (15 min)",sync:"async"},{id:"m6",from:"api",to:"web",action:"Upload URL + upload id",sync:"async"},{id:"m7",from:"web",to:"store",action:"PUT file bytes (browser to storage)",sync:"sync"},{id:"m8",from:"store",to:"web",action:"200 ETag",sync:"async"},{id:"m9",from:"web",to:"api",action:"POST /uploads/:id/complete",sync:"sync"},{id:"m10",from:"api",to:"store",action:"HEAD object — confirm size matches",sync:"sync"},{id:"m11",from:"api",to:"worker",action:"Enqueue processing job",sync:"async"},{id:"m12",from:"api",to:"web",action:"201 upload record (state PROCESSING)",sync:"async"},{id:"m13",from:"worker",to:"store",action:"Read original",sync:"sync"},{id:"m14",from:"worker",to:"store",action:"Write thumbnail + scanned copy",sync:"sync"},{id:"m15",from:"worker",to:"api",action:"Mark upload READY",sync:"async"},{id:"m16",from:"api",to:"web",action:"Push 'ready' over websocket",sync:"async"}]},"seq-webhook-retry":{actors:[{id:"app",label:"Your platform"},{id:"queue",label:"Delivery queue"},{id:"sender",label:"Webhook sender"},{id:"endpoint",label:"Customer endpoint"},{id:"ops",label:"Customer ops"}],events:[{id:"m1",from:"app",to:"queue",action:"Enqueue invoice.paid event",sync:"async"},{id:"m2",from:"queue",to:"sender",action:"Deliver attempt 1",sync:"async"},{id:"m3",from:"sender",to:"endpoint",action:"POST /hooks with HMAC signature",sync:"sync"},{id:"m4",from:"endpoint",to:"sender",action:"500 Internal Server Error",sync:"async"},{id:"m5",from:"sender",to:"queue",action:"Schedule retry in 1 min",sync:"async"},{id:"m6",from:"queue",to:"sender",action:"Deliver attempt 2",sync:"async"},{id:"m7",from:"sender",to:"endpoint",action:"POST /hooks (same event id)",sync:"sync"},{id:"m8",from:"endpoint",to:"sender",action:"Timeout after 10s",sync:"async"},{id:"m9",from:"sender",to:"queue",action:"Schedule retry in 5 min",sync:"async"},{id:"m10",from:"queue",to:"sender",action:"Deliver attempt 3",sync:"async"},{id:"m11",from:"sender",to:"endpoint",action:"POST /hooks (same event id)",sync:"sync"},{id:"m12",from:"endpoint",to:"endpoint",action:"Recognise event id, skip duplicate work",sync:"sync"},{id:"m13",from:"endpoint",to:"sender",action:"200 OK",sync:"async"},{id:"m14",from:"sender",to:"app",action:"Mark delivery succeeded",sync:"async"},{id:"m15",from:"sender",to:"ops",action:"If all attempts fail: alert & disable endpoint",sync:"async"}]},"seq-chat-message":{actors:[{id:"alice",label:"Alice"},{id:"clientA",label:"Alice's app"},{id:"gateway",label:"Websocket gateway"},{id:"chat",label:"Chat service"},{id:"push",label:"Push service"},{id:"clientB",label:"Bob's app"}],events:[{id:"m1",from:"alice",to:"clientA",action:"Type and hit send",sync:"sync"},{id:"m2",from:"clientA",to:"clientA",action:"Render optimistically as 'sending'",sync:"sync"},{id:"m3",from:"clientA",to:"gateway",action:"send(message, client_msg_id)",sync:"sync"},{id:"m4",from:"gateway",to:"chat",action:"Persist message",sync:"sync"},{id:"m5",from:"chat",to:"gateway",action:"server_msg_id + timestamp",sync:"async"},{id:"m6",from:"gateway",to:"clientA",action:"ack(client_msg_id, server_msg_id)",sync:"async"},{id:"m7",from:"clientA",to:"clientA",action:"Swap 'sending' for 'sent'",sync:"sync"},{id:"m8",from:"chat",to:"gateway",action:"Fan out to room members",sync:"async"},{id:"m9",from:"gateway",to:"clientB",action:"new_message event",sync:"async"},{id:"m10",from:"chat",to:"push",action:"Bob offline: send push",sync:"async"},{id:"m11",from:"push",to:"clientB",action:"Push notification",sync:"async"},{id:"m12",from:"clientB",to:"gateway",action:"read_receipt(server_msg_id)",sync:"sync"},{id:"m13",from:"gateway",to:"chat",action:"Store read receipt",sync:"async"},{id:"m14",from:"chat",to:"clientA",action:"Mark as read",sync:"async"}]}},f={"erd-ecommerce":{en:"E-commerce orders",zh:"电商订单库"},"erd-blog":{en:"Blog / CMS",zh:"博客 / CMS"},"erd-saas":{en:"Multi-tenant SaaS",zh:"多租户 SaaS"},"erd-lms":{en:"Online courses",zh:"在线课程"},"erd-inventory":{en:"Inventory & warehouses",zh:"库存与仓储"},"erd-booking":{en:"Hotel booking",zh:"酒店预订"},"erd-rbac":{en:"Users, roles & permissions",zh:"用户 · 角色 · 权限"},"erd-analytics":{en:"Product analytics events",zh:"事件分析"}},g={"erd-ecommerce":{entities:[{name:"Customer",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"email",type:"string"},{name:"name",type:"string"},{name:"created_at",type:"datetime"}]},{name:"Address",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"customer_id",type:"uuid",isForeign:!0},{name:"line1",type:"string"},{name:"city",type:"string"},{name:"postcode",type:"string"},{name:"country",type:"string"}]},{name:"Order",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"customer_id",type:"uuid",isForeign:!0},{name:"address_id",type:"uuid",isForeign:!0},{name:"status",type:"string"},{name:"total",type:"decimal"},{name:"placed_at",type:"datetime"}]},{name:"OrderItem",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"order_id",type:"uuid",isForeign:!0},{name:"product_id",type:"uuid",isForeign:!0},{name:"quantity",type:"int"},{name:"unit_price",type:"decimal"}]},{name:"Product",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"category_id",type:"uuid",isForeign:!0},{name:"sku",type:"string"},{name:"name",type:"string"},{name:"price",type:"decimal"},{name:"stock",type:"int"}]},{name:"Category",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"name",type:"string"},{name:"slug",type:"string"}]},{name:"Payment",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"order_id",type:"uuid",isForeign:!0},{name:"provider",type:"string"},{name:"amount",type:"decimal"},{name:"status",type:"string"},{name:"paid_at",type:"datetime"}]},{name:"Shipment",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"order_id",type:"uuid",isForeign:!0},{name:"carrier",type:"string"},{name:"tracking_no",type:"string"},{name:"shipped_at",type:"datetime"}]}],relationships:[{id:"r1",from:"Customer",to:"Address",label:"has",cardinality:"1..*"},{id:"r2",from:"Customer",to:"Order",label:"places",cardinality:"1..*"},{id:"r3",from:"Address",to:"Order",label:"ships to",cardinality:"1..*"},{id:"r4",from:"Order",to:"OrderItem",label:"contains",cardinality:"1..*"},{id:"r5",from:"Product",to:"OrderItem",label:"appears in",cardinality:"1..*"},{id:"r6",from:"Category",to:"Product",label:"groups",cardinality:"1..*"},{id:"r7",from:"Order",to:"Payment",label:"settled by",cardinality:"1..1"},{id:"r8",from:"Order",to:"Shipment",label:"fulfilled by",cardinality:"1..*"}]},"erd-blog":{entities:[{name:"Author",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"display_name",type:"string"},{name:"email",type:"string"},{name:"bio",type:"text"}]},{name:"Post",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"author_id",type:"uuid",isForeign:!0},{name:"category_id",type:"uuid",isForeign:!0},{name:"title",type:"string"},{name:"slug",type:"string"},{name:"body",type:"text"},{name:"status",type:"string"},{name:"published_at",type:"datetime"}]},{name:"Category",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"name",type:"string"},{name:"slug",type:"string"}]},{name:"Tag",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"name",type:"string"},{name:"slug",type:"string"}]},{name:"PostTag",attributes:[{name:"post_id",type:"uuid",isPrimary:!0,isForeign:!0},{name:"tag_id",type:"uuid",isPrimary:!0,isForeign:!0}]},{name:"Comment",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"post_id",type:"uuid",isForeign:!0},{name:"parent_id",type:"uuid",isForeign:!0},{name:"author_name",type:"string"},{name:"body",type:"text"},{name:"approved",type:"boolean"},{name:"created_at",type:"datetime"}]},{name:"Media",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"post_id",type:"uuid",isForeign:!0},{name:"url",type:"string"},{name:"alt",type:"string"},{name:"kind",type:"string"}]},{name:"Revision",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"post_id",type:"uuid",isForeign:!0},{name:"body",type:"text"},{name:"saved_at",type:"datetime"}]}],relationships:[{id:"r1",from:"Author",to:"Post",label:"writes",cardinality:"1..*"},{id:"r2",from:"Category",to:"Post",label:"groups",cardinality:"1..*"},{id:"r3",from:"Post",to:"PostTag",label:"tagged via",cardinality:"1..*"},{id:"r4",from:"Tag",to:"PostTag",label:"used in",cardinality:"1..*"},{id:"r5",from:"Post",to:"Comment",label:"receives",cardinality:"1..*"},{id:"r6",from:"Comment",to:"Comment",label:"replies to",cardinality:"1..*"},{id:"r7",from:"Post",to:"Media",label:"embeds",cardinality:"1..*"},{id:"r8",from:"Post",to:"Revision",label:"has history",cardinality:"1..*"}]},"erd-saas":{entities:[{name:"Tenant",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"name",type:"string"},{name:"slug",type:"string"},{name:"created_at",type:"datetime"}]},{name:"User",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"email",type:"string"},{name:"password_hash",type:"string"},{name:"last_seen_at",type:"datetime"}]},{name:"Membership",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"tenant_id",type:"uuid",isForeign:!0},{name:"user_id",type:"uuid",isForeign:!0},{name:"role",type:"string"},{name:"joined_at",type:"datetime"}]},{name:"Plan",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"code",type:"string"},{name:"seat_limit",type:"int"},{name:"monthly_price",type:"decimal"}]},{name:"Subscription",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"tenant_id",type:"uuid",isForeign:!0},{name:"plan_id",type:"uuid",isForeign:!0},{name:"status",type:"string"},{name:"renews_at",type:"datetime"}]},{name:"Invoice",attrib
1utes:[{name:"id",type:"uuid",isPrimary:!0},{name:"subscription_id",type:"uuid",isForeign:!0},{name:"amount",type:"decimal"},{name:"period_start",type:"datetime"},{name:"paid_at",type:"datetime"}]},{name:"Project",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"tenant_id",type:"uuid",isForeign:!0},{name:"name",type:"string"},{name:"archived",type:"boolean"}]},{name:"AuditLog",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"tenant_id",type:"uuid",isForeign:!0},{name:"user_id",type:"uuid",isForeign:!0},{name:"action",type:"string"},{name:"occurred_at",type:"datetime"}]}],relationships:[{id:"r1",from:"Tenant",to:"Membership",label:"has",cardinality:"1..*"},{id:"r2",from:"User",to:"Membership",label:"belongs via",cardinality:"1..*"},{id:"r3",from:"Tenant",to:"Subscription",label:"subscribes",cardinality:"1..1"},{id:"r4",from:"Plan",to:"Subscription",label:"priced by",cardinality:"1..*"},{id:"r5",from:"Subscription",to:"Invoice",label:"bills",cardinality:"1..*"},{id:"r6",from:"Tenant",to:"Project",label:"owns",cardinality:"1..*"},{id:"r7",from:"Tenant",to:"AuditLog",label:"records",cardinality:"1..*"},{id:"r8",from:"User",to:"AuditLog",label:"performed",cardinality:"1..*"}]},"erd-lms":{entities:[{name:"Student",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"name",type:"string"},{name:"email",type:"string"},{name:"enrolled_at",type:"datetime"}]},{name:"Instructor",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"name",type:"string"},{name:"title",type:"string"}]},{name:"Course",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"instructor_id",type:"uuid",isForeign:!0},{name:"title",type:"string"},{name:"level",type:"string"},{name:"published",type:"boolean"}]},{name:"Module",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"course_id",type:"uuid",isForeign:!0},{name:"title",type:"string"},{name:"position",type:"int"}]},{name:"Lesson",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"module_id",type:"uuid",isForeign:!0},{name:"title",type:"string"},{name:"video_url",type:"string"},{name:"duration_sec",type:"int"}]},{name:"Enrollment",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"student_id",type:"uuid",isForeign:!0},{name:"course_id",type:"uuid",isForeign:!0},{name:"progress_pct",type:"int"},{name:"started_at",type:"datetime"}]},{name:"Assignment",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"lesson_id",type:"uuid",isForeign:!0},{name:"prompt",type:"text"},{name:"due_at",type:"datetime"}]},{name:"Submission",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"assignment_id",type:"uuid",isForeign:!0},{name:"student_id",type:"uuid",isForeign:!0},{name:"score",type:"int"},{name:"submitted_at",type:"datetime"}]}],relationships:[{id:"r1",from:"Instructor",to:"Course",label:"teaches",cardinality:"1..*"},{id:"r2",from:"Course",to:"Module",label:"divided into",cardinality:"1..*"},{id:"r3",from:"Module",to:"Lesson",label:"contains",cardinality:"1..*"},{id:"r4",from:"Student",to:"Enrollment",label:"enrolls via",cardinality:"1..*"},{id:"r5",from:"Course",to:"Enrollment",label:"enrolled by",cardinality:"1..*"},{id:"r6",from:"Lesson",to:"Assignment",label:"sets",cardinality:"1..*"},{id:"r7",from:"Assignment",to:"Submission",label:"answered by",cardinality:"1..*"},{id:"r8",from:"Student",to:"Submission",label:"submits",cardinality:"1..*"}]},"erd-inventory":{entities:[{name:"Warehouse",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"code",type:"string"},{name:"city",type:"string"}]},{name:"Location",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"warehouse_id",type:"uuid",isForeign:!0},{name:"aisle",type:"string"},{name:"shelf",type:"string"}]},{name:"Product",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"sku",type:"string"},{name:"name",type:"string"},{name:"unit",type:"string"}]},{name:"StockLevel",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"product_id",type:"uuid",isForeign:!0},{name:"location_id",type:"uuid",isForeign:!0},{name:"on_hand",type:"int"},{name:"reserved",type:"int"}]},{name:"StockMovement",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"product_id",type:"uuid",isForeign:!0},{name:"location_id",type:"uuid",isForeign:!0},{name:"delta",type:"int"},{name:"reason",type:"string"},{name:"occurred_at",type:"datetime"}]},{name:"Supplier",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"name",type:"string"},{name:"lead_time_days",type:"int"}]},{name:"PurchaseOrder",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"supplier_id",type:"uuid",isForeign:!0},{name:"warehouse_id",type:"uuid",isForeign:!0},{name:"status",type:"string"},{name:"ordered_at",type:"datetime"}]},{name:"PurchaseOrderLine",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"purchase_order_id",type:"uuid",isForeign:!0},{name:"product_id",type:"uuid",isForeign:!0},{name:"quantity",type:"int"},{name:"unit_cost",type:"decimal"}]}],relationships:[{id:"r1",from:"Warehouse",to:"Location",label:"divided into",cardinality:"1..*"},{id:"r2",from:"Location",to:"StockLevel",label:"holds",cardinality:"1..*"},{id:"r3",from:"Product",to:"StockLevel",label:"stocked as",cardinality:"1..*"},{id:"r4",from:"Product",to:"StockMovement",label:"moved by",cardinality:"1..*"},{id:"r5",from:"Location",to:"StockMovement",label:"recorded at",cardinality:"1..*"},{id:"r6",from:"Supplier",to:"PurchaseOrder",label:"fulfils",cardinality:"1..*"},{id:"r7",from:"PurchaseOrder",to:"PurchaseOrderLine",label:"contains",cardinality:"1..*"},{id:"r8",from:"Product",to:"PurchaseOrderLine",label:"ordered as",cardinality:"1..*"}]},"erd-booking":{entities:[{name:"Hotel",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"name",type:"string"},{name:"city",type:"string"},{name:"stars",type:"int"}]},{name:"RoomType",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"hotel_id",type:"uuid",isForeign:!0},{name:"name",type:"string"},{name:"capacity",type:"int"},{name:"base_rate",type:"decimal"}]},{name:"Room",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"room_type_id",type:"uuid",isForeign:!0},{name:"number",type:"string"},{name:"floor",type:"int"}]},{name:"Guest",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"name",type:"string"},{name:"email",type:"string"},{name:"phone",type:"string"}]},{name:"Booking",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"guest_id",type:"uuid",isForeign:!0},{name:"room_id",type:"uuid",isForeign:!0},{name:"check_in",type:"datetime"},{name:"check_out",type:"datetime"},{name:"status",type:"string"}]},{name:"RatePlan",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"room_type_id",type:"uuid",isForeign:!0},{name:"name",type:"string"},{name:"refundable",type:"boolean"},{name:"price",type:"decimal"}]},{name:"Payment",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"booking_id",type:"uuid",isForeign:!0},{name:"amount",type:"decimal"},{name:"method",type:"string"},{name:"captured_at",type:"datetime"}]},{name:"Review",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"booking_id",type:"uuid",isForeign:!0},{name:"rating",type:"int"},{name:"body",type:"text"},{name:"posted_at",type:"datetime"}]}],relationships:[{id:"r1",from:"Hotel",to:"RoomType",label:"offers",cardinality:"1..*"},{id:"r2",from:"RoomType",to:"Room",label:"realised as",cardinality:"1..*"},{id:"r3",from:"RoomType",to:"RatePlan",label:"priced by",cardinality:"1..*"},{id:"r4",from:"Guest",to:"Booking",label:"books",cardinality:"1..*"},{id:"r5",from:"Room",to:"Booking",label:"reserved by",cardinality:"1..*"},{id:"r6",from:"Booking",to:"Payment",label:"paid by",cardinality:"1..*"},{id:"r7",from:"Booking",to:"Review",label:"reviewed by",cardinality:"1..1"}]},"erd-rbac":{entities:[{name:"User",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"email",type:"string"},{name:"display_name",type:"string"},{name:"is_active",type:"boolean"}]},{name:"Role",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"name",type:"string"},{name:"description",type:"string"}]},{name:"UserRole",attributes:[{name:"user_id",type:"uuid",isPrimary:!0,isForeign:!0},{name:"role_id",type:"uuid",isPrimary:!0,isForeign:!0},{name:"granted_at",type:"datetime"}]},{name:"Permission",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"resource",type:"string"},{name:"action",type:"string"}]},{name:"RolePermission",attributes:[{name:"role_id",type:"uuid",isPrimary:!0,isForeign:!0},{name:"permission_id",type:"uuid",isPrimary:!0,isForeign:!0}]},{name:"Group",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"name",type:"string"},{name:"parent_id",type:"uuid",isForeign:!0}]},{name:"GroupMember",attributes:[{name:"group_id",type:"uuid",isPrimary:!0,isForeign:!0},{name:"user_id",type:"uuid",isPrimary:!0,isForeign:!0}]},{name:"Session",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"user_id",type:"uuid",isForeign:!0},{name:"ip",type:"string"},{name:"expires_at",type:"datetime"}]}],relationships:[{id:"r1",from:"User",to:"UserRole",label:"assigned via",cardinality:"1..*"},{id:"r2",from:"Role",to:"UserRole",label:"granted via",cardinality:"1..*"},{id:"r3",from:"Role",to:"RolePermission",label:"allows via",cardinality:"1..*"},{id:"r4",from:"Permission",to:"RolePermission",label:"granted via",cardinality:"1..*"},{id:"r5",from:"Group",to:"GroupMember",label:"includes",cardinality:"1..*"},{id:"r6",from:"User",to:"GroupMember",label:"member via",cardinality:"1..*"},{id:"r7",from:"Group",to:"Group",label:"nested under",cardinality:"1..*"},{id:"r8",from:"User",to:"Session",label:"opens",cardinality:"1..*"}]},"erd-analytics":{entities:[{name:"Account",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"name",type:"string"},{name:"plan",type:"string"}]},{name:"User",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"account_id",type:"uuid",isForeign:!0},{name:"email",type:"string"},{name:"signed_up_at",type:"datetime"}]},{name:"Device",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"user_id",type:"uuid",isForeign:!0},{name:"platform",type:"string"},{name:"app_version",type:"string"}]},{name:"Session",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"device_id",type:"uuid",isForeign:!0},{name:"started_at",type:"datetime"},{name:"duration_sec",type:"int"}]},{name:"Event",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"session_id",type:"uuid",isForeign:!0},{name:"event_type_id",type:"uuid",isForeign:!0},{name:"occurred_at",type:"datetime"}]},{name:"EventType",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"name",type:"string"},{name:"category",type:"string"}]},{name:"EventProperty",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"event_id",type:"uuid",isForeign:!0},{name:"key",type:"string"},{name:"value",type:"string"}]},{name:"Experiment",attributes:[{name:"id",type:"uuid",isPrimary:!0},{name:"name",type:"string"},{name:"variant",type:"string"},{name:"user_id",type:"uuid",isForeign:!0}]}],relationships:[{id:"r1",from:"Account",to:"User",label:"has",cardinality:"1..*"},{id:"r2",from:"User",to:"Device",label:"uses",cardinality:"1..*"},{id:"r3",from:"Device",to:"Session",label:"opens",cardinality:"1..*"},{id:"r4",from:"Session",to:"Event",label:"records",cardinality:"1..*"},{id:"r5",from:"EventType",to:"Event",label:"classifies",cardinality:"1..*"},{id:"r6",from:"Event",to:"EventProperty",label:"carries",cardinality:"1..*"},{id:"r7",from:"User",to:"Experiment",label:"bucketed into",cardinality:"1..*"}]}},v={"class-ecommerce":{classes:[{name:"Customer",fields:[{name:"id",type:"UUID",visibility:"public"},{name:"email",type:"string",visibility:"public"},{name:"name",type:"string",visibility:"public"},{name:"createdAt",type:"DateTime",visibility:"public"}],methods:[{name:"placeOrder",signature:"(cart: Cart): Order",visibility:"public"},{name:"defaultAddress",signature:"(): Address",visibility:"public"}]},{name:"Address",fields:[{name:"line1",type:"string",visibility:"public"},{name:"city",type:"string",visibility:"public"},{name:"postcode",type:"string",visibility:"public"},{name:"country",type:"string",visibility:"public"}],methods:[]},{name:"Order",fields:[{name:"id",type:"UUID",visibility:"public"},{name:"placedAt",type:"DateTime",visibility:"public"},{name:"status",type:"OrderStatus",visibility:"public"}],methods:[{name:"total",signature:"(): Money",visibility:"public"},{name:"cancel",signature:"(reason: string): void",visibility:"public"}]},{name:"OrderStatus",stereotype:"enumeration",fields:[{name:"PENDING",type:"",visibility:"public"},{name:"PAID",type:"",visibility:"public"},{name:"SHIPPED",type:"",visibility:"public"},{name:"CANCELLED",type:"",visibility:"public"}],methods:[]},{name:"LineItem",fields:[{name:"quantity",type:"int",visibility:"public"},{name:"unitPrice",type:"Money",visibility:"public"}],methods:[{name:"subtotal",signature:"(): Money",visibility:"public"}]},{name:"Product",fields:[{name:"sku",type:"string",visibility:"public"},{name:"title",type:"string",visibility:"public"},{name:"price",type:"Money",visibility:"public"},{name:"stock",type:"int",visibility:"private"}],methods:[{name:"inStock",signature:"(qty: int): bool",visibility:"public"}]},{name:"Payment",fields:[{name:"amount",type:"Money",visibility:"public"},{name:"provider",type:"string",visibility:"public"},{name:"capturedAt",type:"DateTime",visibility:"public"}],methods:[{name:"capture",signature:"(): bool",visibility:"public"},{name:"refund",signature:"(amount: Money): bool",visibility:"public"}]}],relations:[{id:"r1",from:"Customer",to:"Order",type:"association",label:"places",fromCardinality:"1",toCardinality:"*"},{id:"r2",from:"Customer",to:"Address",type:"aggregation",label:"ships to",fromCardinality:"1",toCardinality:"*"},{id:"r3",from:"Order",to:"LineItem",type:"composition",label:"contains",fromCardinality:"1",toCardinality:"1..*"},{id:"r4",from:"LineItem",to:"Product",type:"association",label:"refers to",fromCardinality:"*",toCardinality:"1"},{id:"r5",from:"Order",to:"Payment",type:"association",label:"settled by",fromCardinality:"1",toCardinality:"0..1"},{id:"r6",from:"Order",to:"OrderStatus",type:"dependency"}]},"class-rbac":{classes:[{name:"User",fields:[{name:"id",type:"UUID",visibility:"public"},{name:"email",type:"string",visibility:"public"},{name:"passwordHash",type:"string",visibility:"private"},{name:"active",type:"bool",visibility:"public"}],methods:[{name:"hasPermission",signature:"(code: string): bool",visibility:"public"},{name:"assign",signature:"(role: Role): void",visibility:"public"}]},{name:"Role",fields:[{name:"name",type:"string",visibility:"public"},{name:"description",type:"string",visibility:"public"},{name:"builtin",type:"bool",visibility:"public"}],methods:[{name:"grant",signature:"(p: Permission): void",visibility:"public"}]},{name:"Permission",fields:[{name:"code",type:"string",visibility:"public"},{name:"resource",type:"string",visibility:"public"},{name:"action",type:"string",visibility:"public"}],methods:[]},{name:"Session",fields:[{name:"token",type:"string",visibility:"private"},{name:"issuedAt",type:"DateTime",visibility:"public"},{name:"expiresAt",type:"DateTime",visibility:"public"},{name:"ip",type:"string",visibility:"public"}],methods:[{name:"isValid",signature:"(): bool",visibility:"public"},{name:"revoke",signature:"(): void",visibility:"public"}]},{name:"AuditEntry",fields:[{name:"at",type:"DateTime",visibility:"public"},{name:"action",type:"string",visibility:"public"},{name:"target",type:"string",visibility:"public"}],methods:[]},{name:"PolicyEvaluator",stereotype:"interface",fields:[],methods:[{name:"evaluate",signature:"(u: User, code: string): bool",visibility:"public"}]},{name:"RbacEvaluator",fields:[],methods:[{name:"evaluate",signature:"(u: User, code: string): bool",visibility:"public"}]}],relations:[{id:"r1",from:"User",to:"Role",type:"association",label:"assigned",fromCardinality:"*",toCardinality:"*"},{id:"r2",from:"Role",to:"Permission",type:"association",label:"grants",fromCardinality:"*",toCardinality:"*"},{id:"r3",from:"User",to:"Session",type:"composition",label:"opens",fromCardinality:"1",toCardinality:"*"},{id:"r4",from:"User",to:"AuditEntry",type:"association",label:"logged as",fromCardinality:"1",toCardinality:"*"},{id:"r5",from:"PolicyEvaluator",to:"RbacEvaluator",type:"implements"},{id:"r6",from:"RbacEvaluator",to:"Permission",type:"dependency"}]},"class-library":{classes:[{name:"Library",fields:[{name:"name",type:"string",visibility:"public"
1},{name:"branchCode",type:"string",visibility:"public"}],methods:[{name:"search",signature:"(query: string): List<Book>",visibility:"public"},{name:"register",signature:"(m: Member): void",visibility:"public"}]},{name:"Book",fields:[{name:"isbn",type:"string",visibility:"public"},{name:"title",type:"string",visibility:"public"},{name:"publishedYear",type:"int",visibility:"public"}],methods:[{name:"isAvailable",signature:"(): bool",visibility:"public"}]},{name:"Copy",fields:[{name:"barcode",type:"string",visibility:"public"},{name:"shelf",type:"string",visibility:"public"},{name:"condition",type:"string",visibility:"public"}],methods:[]},{name:"Author",fields:[{name:"name",type:"string",visibility:"public"},{name:"born",type:"int",visibility:"public"}],methods:[]},{name:"Member",fields:[{name:"memberId",type:"string",visibility:"public"},{name:"name",type:"string",visibility:"public"},{name:"joinedOn",type:"Date",visibility:"public"}],methods:[{name:"borrow",signature:"(c: Copy): Loan",visibility:"public"},{name:"outstandingFines",signature:"(): Money",visibility:"public"}]},{name:"Loan",fields:[{name:"borrowedOn",type:"Date",visibility:"public"},{name:"dueOn",type:"Date",visibility:"public"},{name:"returnedOn",type:"Date",visibility:"public"}],methods:[{name:"isOverdue",signature:"(): bool",visibility:"public"},{name:"fine",signature:"(): Money",visibility:"public"}]},{name:"Reservation",fields:[{name:"placedOn",type:"Date",visibility:"public"},{name:"queuePosition",type:"int",visibility:"public"}],methods:[{name:"cancel",signature:"(): void",visibility:"public"}]}],relations:[{id:"r1",from:"Library",to:"Copy",type:"composition",label:"holds",fromCardinality:"1",toCardinality:"*"},{id:"r2",from:"Library",to:"Member",type:"aggregation",label:"registers",fromCardinality:"1",toCardinality:"*"},{id:"r3",from:"Book",to:"Copy",type:"association",label:"has copies",fromCardinality:"1",toCardinality:"*"},{id:"r4",from:"Book",to:"Author",type:"association",label:"written by",fromCardinality:"*",toCardinality:"1..*"},{id:"r5",from:"Member",to:"Loan",type:"association",label:"takes out",fromCardinality:"1",toCardinality:"*"},{id:"r6",from:"Loan",to:"Copy",type:"association",label:"covers",fromCardinality:"*",toCardinality:"1"},{id:"r7",from:"Member",to:"Reservation",type:"association",label:"places",fromCardinality:"1",toCardinality:"*"},{id:"r8",from:"Reservation",to:"Book",type:"association",label:"queues for",fromCardinality:"*",toCardinality:"1"}]},"class-strategy":{classes:[{name:"PaymentProcessor",fields:[{name:"strategy",type:"PaymentStrategy",visibility:"private"},{name:"retries",type:"int",visibility:"private"}],methods:[{name:"setStrategy",signature:"(s: PaymentStrategy): void",visibility:"public"},{name:"pay",signature:"(amount: Money): Receipt",visibility:"public"}]},{name:"PaymentStrategy",stereotype:"interface",fields:[],methods:[{name:"charge",signature:"(amount: Money): Receipt",visibility:"public"},{name:"refund",signature:"(txId: string): bool",visibility:"public"},{name:"supports",signature:"(currency: string): bool",visibility:"public"}]},{name:"StripeStrategy",fields:[{name:"apiKey",type:"string",visibility:"private"}],methods:[{name:"charge",signature:"(amount: Money): Receipt",visibility:"public"},{name:"refund",signature:"(txId: string): bool",visibility:"public"},{name:"supports",signature:"(currency: string): bool",visibility:"public"}]},{name:"PayPalStrategy",fields:[{name:"clientId",type:"string",visibility:"private"}],methods:[{name:"charge",signature:"(amount: Money): Receipt",visibility:"public"},{name:"refund",signature:"(txId: string): bool",visibility:"public"},{name:"supports",signature:"(currency: string): bool",visibility:"public"}]},{name:"WalletStrategy",fields:[{name:"walletId",type:"string",visibility:"private"}],methods:[{name:"charge",signature:"(amount: Money): Receipt",visibility:"public"},{name:"refund",signature:"(txId: string): bool",visibility:"public"},{name:"supports",signature:"(currency: string): bool",visibility:"public"}]},{name:"Receipt",fields:[{name:"txId",type:"string",visibility:"public"},{name:"amount",type:"Money",visibility:"public"},{name:"paidAt",type:"DateTime",visibility:"public"}],methods:[]},{name:"StrategyFactory",fields:[],methods:[{name:"forCurrency",signature:"(c: string): PaymentStrategy",visibility:"public"}]}],relations:[{id:"r1",from:"PaymentProcessor",to:"PaymentStrategy",type:"aggregation",label:"uses",fromCardinality:"1",toCardinality:"1"},{id:"r2",from:"PaymentStrategy",to:"StripeStrategy",type:"implements"},{id:"r3",from:"PaymentStrategy",to:"PayPalStrategy",type:"implements"},{id:"r4",from:"PaymentStrategy",to:"WalletStrategy",type:"implements"},{id:"r5",from:"PaymentProcessor",to:"Receipt",type:"dependency",label:"returns"},{id:"r6",from:"StrategyFactory",to:"PaymentStrategy",type:"dependency",label:"creates"}]}
1,"class-shapes":{classes:[{name:"Shape",stereotype:"abstract",fields:[{name:"id",type:"string",visibility:"public"},{name:"fill",type:"Color",visibility:"protected"},{name:"stroke",type:"Color",visibility:"protected"}],methods:[{name:"area",signature:"(): double",visibility:"public"},{name:"perimeter",signature:"(): double",visibility:"public"},{name:"describe",signature:"(): string",visibility:"public"},{name:"moveTo",signature:"(p: Point): void",visibility:"public"}]},{name:"Point",fields:[{name:"x",type:"double",visibility:"public"},{name:"y",type:"double",visibility:"public"}],methods:[]},{name:"Circle",fields:[{name:"radius",type:"double",visibility:"public"}],methods:[{name:"area",signature:"(): double",visibility:"public"},{name:"perimeter",signature:"(): double",visibility:"public"}]},{name:"Rectangle",fields:[{name:"width",type:"double",visibility:"public"},{name:"height",type:"double",visibility:"public"}],methods:[{name:"area",signature:"(): double",visibility:"public"},{name:"perimeter",signature:"(): double",visibility:"public"}]},{name:"Square",fields:[{name:"side",type:"double",visibility:"public"}],methods:[]},{name:"Triangle",fields:[{name:"base",type:"double",visibility:"public"},{name:"height",type:"double",visibility:"public"}],methods:[{name:"area",signature:"(): double",visibility:"public"},{name:"perimeter",signature:"(): double",visibility:"public"}]},{name:"Drawable",stereotype:"interface",fields:[],methods:[{name:"draw",signature:"(ctx: Canvas): void",visibility:"public"}]},{name:"Canvas",fields:[{name:"width",type:"int",visibility:"public"},{name:"height",type:"int",visibility:"public"}],methods:[{name:"render",signature:"(): Image",visibility:"public"}]}],relations:[{id:"r1",from:"Shape",to:"Circle",type:"extends"},{id:"r2",from:"Shape",to:"Rectangle",type:"extends"},{id:"r3",from:"Shape",to:"Triangle",type:"extends"},{id:"r4",from:"Rectangle",to:"Square",type:"extends"},{id:"r5",from:"Drawable",to:"Shape",type:"implements"},{id:"r6",from:"Shape",to:"Point",type:"composition",label:"origin",fromCardinality:"1",toCardinality:"1"},{id:"r7",from:"Canvas",to:"Drawable",type:"aggregation",label:"draws",fromCardinality:"1",toCardinality:"*"}]},"class-layered-service":{classes:[{name:"OrderController",fields:[{name:"service",type:"OrderService",visibility:"private"}],methods:[{name:"create",signature:"(req: Request): Response",visibility:"public"},{name:"get",signature:"(id: string): Response",visibility:"public"}]},{name:"OrderService",fields:[{name:"repo",type:"OrderRepository",visibility:"private"},{name:"notifier",type:"Notifier",visibility:"private"}],methods:[{name:"placeOrder",signature:"(dto: OrderDto): Order",visibility:"public"},{name:"cancel",signature:"(id: string): void",visibility:"public"}]},{name:"OrderDto",fields:[{name:"customerId",type:"string",visibility:"public"},{name:"items",type:"List<ItemDto>",visibility:"public"}],methods:[]},{name:"OrderRepository",stereotype:"interface",fields:[],methods:[{name:"findById",signature:"(id: string): Order",visibility:"public"},{name:"save",signature:"(o: Order): Order",visibility:"public"}]},{name:"PostgresOrderRepository",fields:[{name:"db",type:"DbClient",visibility:"private"}],methods:[{name:"findById",signature:"(id: string): Order",visibility:"public"},{name:"save",signature:"(o: Order): Order",visibility:"public"}]},{name:"InMemoryOrderRepository",fields:[{name:"rows",type:"Map<string, Order>",visibility:"private"}],methods:[{name:"findById",signature:"(id: string): Order",visibility:"public"},{name:"save",signature:"(o: Order): Order",visibility:"public"}]},{name:"Notifier",stereotype:"interface",fields:[],methods:[{name:"send",signature:"(e: DomainEvent): void",visibility:"public"}]},{name:"EmailNotifier",fields:[{name:"smtp",type:"SmtpConfig",visibility:"private"}],methods:[{name:"send",signature:"(e: DomainEvent): void",visibility:"public"}]},{name:"Order",fields:[{name:"id",type:"string",visibility:"public"},{name:"status",type:"string",visibility:"public"}],methods:[]}],relations:[{id:"r1",from:"OrderController",to:"OrderService",type:"dependency",label:"calls"},{id:"r2",from:"OrderController",to:"OrderDto",type:"dependency"},{id:"r3",from:"OrderService",to:"OrderRepository",type:"aggregation",fromCardinality:"1",toCardinality:"1"},{id:"r4",from:"OrderService",to:"Notifier",type:"aggregation",fromCardinality:"1",toCardinality:"1"},{id:"r5",from:"OrderRepository",to:"PostgresOrderRepository",type:"implements"},{id:"r6",from:"OrderRepository",to:"InMemoryOrderRepository",type:"implements"},{id:"r7",from:"Notifier",to:"EmailNotifier",type:"implements"},{id:"r8",from:"OrderRepository",to:"Order",type:"dependency",label:"returns"}]},"class-cms":{classes:[{name:"Author",fields:[{name:"id",type:"UUID",visibility:"public"},{name:"displayName",type:"string",visibility:"public"},{name:"bio",type:"string",visibility:"public"}],methods:[{name:"publish",signature:"(p: Post): void",visibility:"public"}]},{name:"Post",fields:[{name:"slug",type:"string",visibility:"public"},{name:"title",type:"string",visibility:"public"},{name:"body",type:"string",visibility:"public"},{name:"publishedAt",type:"DateTime",visibility:"public"}],methods:[{name:"isDraft",signature:"(): bool",visibility:"public"},{name:"readingTime",signature:"(): int",visibility:"public"}]},{name:"Revision",fields:[{name:"number",type:"int",visibility:"public"},{name:"savedAt",type:"DateTime",visibility:"public"},{name:"body",type:"string",visibility:"public"}],methods:[{name:"restore",signature:"(): void",visibility:"public"}]},{name:"Category",fields:[{name:"name",type:"string",visibility:"public"},{name:"slug",type:"string",visibility:"public"}],methods:[]},{name:"Tag",fields:[{name:"label",type:"string",visibility:"public"}],methods:[]},{name:"Comment",fields:[{name:"body",type:"string",visibility:"public"},{name:"createdAt",type:"DateTime",visibility:"public"},{name:"approved",type:"bool",visibility:"public"}],methods:[{name:"approve",signature:"(): void",visibility:"public"}]},{name:"MediaAsset",fields:[{name:"url",type:"string",visibility:"public"},{name:"mimeType",type:"string",visibility:"public"},{name:"sizeBytes",type:"int",visibility:"public"}],methods:[]}],relations:[{id:"r1",from:"Author",to:"Post",type:"association",label:"writes",fromCardinality:"1",toCardinality:"*"},{id:"r2",from:"Post",to:"Revision",type:"composition",label:"keeps",fromCardinality:"1",toCardinality:"*"},{id:"r3",from:"Post",to:"Category",type:"association",label:"filed under",fromCardinality:"*",toCardinality:"1"},{id:"r4",from:"Post",to:"Tag",type:"association",label:"tagged with",fromCardinality:"*",toCardinality:"*"},{id:"r5",from:"Post",to:"Comment",type:"composition",label:"collects",fromCardinality:"1",toCardinality:"*"},{id:"r6",from:"Comment",to:"Author",type:"association",label:"written by",fromCardinality:"*",toCardinality:"0..1"},{id:"r7",from:"Post",to:"MediaAsset",type:"aggregation",label:"embeds",fromCardinality:"*",toCardinality:"*"}]},"class-observer":{classes:[{name:"Subject",stereotype:"abstract",f
1ields:[{name:"observers",type:"List<Observer>",visibility:"private"},{name:"name",type:"string",visibility:"protected"}],methods:[{name:"attach",signature:"(o: Observer): void",visibility:"public"},{name:"detach",signature:"(o: Observer): void",visibility:"public"},{name:"notify",signature:"(e: Event): void",visibility:"protected"}]},{name:"OrderStream",fields:[{name:"buffer",type:"List<Order>",visibility:"private"}],methods:[{name:"push",signature:"(o: Order): void",visibility:"public"}]},{name:"InventoryStream",fields:[{name:"threshold",type:"int",visibility:"private"}],methods:[{name:"onStockChange",signature:"(sku: string): void",visibility:"public"}]},{name:"Observer",stereotype:"interface",fields:[],methods:[{name:"update",signature:"(e: Event): void",visibility:"public"}]},{name:"EmailNotifier",fields:[{name:"template",type:"string",visibility:"private"}],methods:[{name:"update",signature:"(e: Event): void",visibility:"public"}]},{name:"AuditLogger",fields:[{name:"logPath",type:"string",visibility:"private"}],methods:[{name:"update",signature:"(e: Event): void",visibility:"public"}]},{name:"MetricsCollector",fields:[{name:"counters",type:"Map<string, int>",visibility:"private"}],methods:[{name:"update",signature:"(e: Event): void",visibility:"public"}]},{name:"Event",fields:[{name:"type",type:"string",visibility:"public"},{name:"payload",type:"Map<string, any>",visibility:"public"},{name:"at",type:"DateTime",visibility:"public"}],methods:[]}],relations:[{id:"r1",from:"Subject",to:"Observer",type:"aggregation",label:"notifies",fromCardinality:"1",toCardinality:"*"},{id:"r2",from:"Subject",to:"OrderStream",type:"extends"},{id:"r3",from:"Subject",to:"InventoryStream",type:"extends"},{id:"r4",from:"Observer",to:"EmailNotifier",type:"implements"},{id:"r5",from:"Observer",to:"AuditLogger",type:"implements"},{id:"r6",from:"Observer",to:"MetricsCollector",type:"implements"},{id:"r7",from:"Subject",to:"Event",type:"dependency",label:"emits"}]}},h={"class-ecommerce":{en:"E-commerce domain model",zh:"电商领域模型"},"class-rbac":{en:"User, role & permission",zh:"用户 · 角色 · 权限"},"class-library":{en:"Library loan system",zh:"图书借阅系统"},"class-strategy":{en:"Strategy pattern",zh:"策略模式"},"class-shapes":{en:"Abstract base class",zh:"抽象基类与继承"},"class-layered-service":{en:"Layered service",zh:"分层服务架构"},"class-cms":{en:"Blog / CMS content model",zh:"博客内容模型"},"class-observer":{en:"Observer pattern",zh:"观察者模式"}},P=new Map([...["class-ecommerce","class-rbac","class-library","class-strategy","class-shapes","class-layered-service","class-cms","class-observer"].map(e=>({id:e,diagramType:"class",title:h[e],graph:v[e]})),...["flow-signup","flow-checkout","flow-cicd","flow-support-ticket","flow-refund","flow-login-2fa","flow-content-review","flow-incident"].map(e=>({id:e,diagramType:"flowchart",title:y[e],graph:p[e]})),...["seq-oauth","seq-checkout","seq-api-cache","seq-password-reset","seq-fulfillment","seq-file-upload","seq-webhook-retry","seq-chat-message"].map(e=>({id:e,diagramType:"sequence",title:u[e],graph:b[e]})),...["erd-ecommerce","erd-blog","erd-saas","erd-lms","erd-inventory","erd-booking","erd-rbac","erd-analytics"].map(e=>({id:e,diagramType:"erd",title:f[e],graph:g[e]}))].map(e=>[e.id,e]));function k(e){return!!e&&P.has(e)}e.s(["getDiagramTemplate",0,function(e){return e?P.get(e)??null:null},"isDiagramTemplateId",0,k,"renderDiagramTemplate",0,function(e){switch(e.diagramType){case"class":var i=e.graph;let y=function(e){let i=new Map,t=new Set;for(let r of e){var a;let e=(a=r.name,/^[\p{L}\p{N}_]+$/u.test(a))?r.name:n(r.name),o=e,s=1;for(;t.has(o);)o=`${e}_${++s}`;t.add(o),i.set(r.name,o)}return i}(i.classes),p=["classDiagram"];for(let e of i.classes)p.push(...function(e,i){var r;let l,d,m=e.stereotype&&(l=e.stereotype.replace(/[<>{}]/g,"").replace(/[\r\n]+/g," ").trim())?`    <<${l}>>`:null,c=(r=e.name,(d=i.get(r)??n(r))===r?r:`${d}["${a(t(r))}"]`);if(0===e.fields.length&&0===e.methods.length&&!m)return[`  class ${c}`];let y=[`  class ${c} {`];for(let i of(m&&y.push(m),e.fields))y.push(`    ${function(e){let i=s(e.type).replace(/\s+/g,""),t=s(e.name);return`${o(e.visibility)}${i?`${i} `:""}${t}`}(i)}`);for(let i of e.methods)y.push(`    ${o(i.visibility)}${s(i.name)}${function(e){let i=e.lastIndexOf(")");if(i<0)return e;let t=e.slice(0,i+1),a=e.slice(i+1).replace(/^\s*:\s*/,"").trim();return a?`${t} ${a}`:t}(s(i.signature))}`);return y.push("  }"),y}(e,y));for(let e of i.relations)p.push(function(e,i){let t=e.label?` : ${s(e.label)}`:"",a=l(e.fromCardinality),r=l(e.toCardinality),n=i.get(e.from)??e.from,o=i.get(e.to)??e.to;return`  ${n}${a} ${function(e){switch(e){case"extends":return"--|>";case"implements":return"..|>";case"aggregation":return"o--";case"composition":return"*--";case"association":return"-->";case"dependency":return"..>"}}(e.type)}${r} ${o}${t}`}(e,y));return p.join("\n");case"flowchart":return function(e){let i=e=>{switch(e.type){case"start":case"end":return`${e.id}((${d(e.label)}))`;case"decision":return`${e.id}{${d(e.label)}}`;default:return`${e.id}[${d(e.label)}]`}},t=["flowchart TD"];for(let a of e.nodes)t.push(`  ${i(a)}`);for(let i of e.edges){let e=i.label?`|${d(i.label)}|`:"";t.push(`  ${i.from} -->${e} ${i.to}`)}let a=e.nodes.filter(e=>
1e.focus).slice(0,2);return a.length&&(t.push("  classDef focus fill:#eb6c36,stroke:#eb6c36,color:#ffffff"),t.push(`  class ${a.map(e=>e.id).join(",")} focus`)),t.join("\n")}(e.graph);case"sequence":return function(e){let i=["sequenceDiagram"];for(let n of e.actors){var t;i.push(`  participant ${n.id} as ${(t=n.label,`"${a(r(t))}"`)}`)}for(let t of e.events){let e="async"===t.sync?"-->>":"->>";i.push(`  ${t.from}${e}${t.to}: ${r(t.action)}`)}return i.join("\n")}(e.graph);case"erd":var u=e.graph;let b=["erDiagram"];for(let e of u.entities)b.push(...function(e){let i=m(e.name);if(0===e.attributes.length)return[`  ${i}`];let t=[`  ${i} {`];for(let i of e.attributes)t.push(function(e){let i=m(e.type),t=m(e.name),a=[];e.isPrimary&&a.push("PK"),e.isForeign&&a.push("FK");let r=a.length>0?` ${a.join(",")}`:"";return`    ${i} ${t}${r}`}(i));return t.push("  }"),t}(e));for(let e of u.relationships)b.push(function(e){var i;let t=m(e.from),a=m(e.to),r=c[e.cardinality];return`  ${t} ${r} ${a} : ${i=e.label,`"${i.replace(/"/g,"#quot;")}"`}`}(e));return b.join("\n")}}],8271);let w=/^[0-9a-f]{16}$/;function C(e){return"string"==typeof e&&w.test(e)}let S=[[/^(flowchart|graph)\b/,"flowchart"],[/^sequenceDiagram\b/,"sequence"],[/^erDiagram\b/,"erd"],[/^stateDiagram(-v2)?\b/,"state"],[/^classDiagram(-v2)?\b/,"class"],[/^mindmap\b/,"mindmap"],[/^gantt\b/,"gantt"],[/^architecture-beta\b/,"arch"]],O=/^#{1,6}\s+\S/;function _(e){let i=function(e){let i=e.split("\n"),t=0;if(i[0]?.trim()==="---"){for(t=1;t<i.length&&i[t]?.trim()!=="---";)t++;t++}for(;t<i.length&&""===i[t].trim();)t++;return(i[t]??"").trim()}(e);for(let[e,t]of S)if(e.test(i))return{type:t,renderer:"mermaid"};return O.test(i)?{type:"mindmap",renderer:"markmap"}:null}function R(e){if("string"!=typeof e)return null;let i=e.trim();if(!i||i.length>4e3)return null;let t=_(i);return t?{code:i,...t}:null}let A=new Set(["prompt","type","mode","template","code","share"]);function D(e){if(!e)return"";let i=new URLSearchParams;for(let t of A){let a=e.get(t);null!=a&&""!==a&&("template"!==t||k(a))&&("code"!==t||R(a))&&("share"!==t||C(a))&&i.set(t,a)}let t=i.toString();return t?`?${t}`:""}e.s(["MAX_EDIT_URL_CODE_LENGTH",0,6e3,"MAX_SHARED_CODE_LENGTH",0,4e3,"buildCleanHomeSearch",0,D,"isCleanHomeSearch",0,function(e,i){var t;return((t=e)&&"?"!==t?t.startsWith("?")?t:`?${t}`:"")===D(i)},"isShareKey",0,C,"normalizeHomeUrlState",0,function(e){var t;let a=e?.get("prompt")??"",r=(0,i.normalizeDiagramType)(e?.get("type"))??"auto",n="chat"===(t=e?.get("mode"))||"plan"===t?"plan":"quick",o=e?.get("template"),s=k(o)?o:null,l=R(e?.get("code")),d=e?.get("share"),m=C(d)?d:null;return{prompt:a,type:r,mode:n,template:s,code:l?.code??null,codeType:l?.type??null,codeRenderer:l?.renderer??null,share:m,ke
1y:JSON.stringify([a,r,n,s,l?.code??null,m])}},"normalizeSharedCode",0,R,"sniffSharedCode",0,_],67036)}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.