@reliantlabs/forge-web-runtime 0.13.3 → 0.13.4

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mock-values.js","sourceRoot":"","sources":["../src/mock-values.ts"],"names":[],"mappings":"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","sourcesContent":["// Part of @reliantlabs/forge-web-runtime — the web twin of forge/pkg.\n//\n// Default mock responses for ANY Connect service, built from its descriptor.\n//\n// The entity fixtures (mock-transport.ts) serve generated CRUD only: every\n// other RPC — a dashboard read, a search, a stream — used to need a\n// hand-written scenario handler before a mocked page rendered anything at\n// all. This module answers every RPC of every service with a deterministic,\n// schema-valid message, so a scenario writes only what it wants to SAY, not\n// the shape of the whole response:\n//\n// serviceDefaults(Service) every RPC's default handler (the generated\n// src/mocks/services/*_gen.ts call this)\n// mockService(Service, {...}) typed per-RPC overrides for a scenario,\n// each handed the defaults to start from\n// patch(message, {...}) deep-merge a change onto a default\n// mockValue(Schema) one message, for a test or a factory\n//\n// Values are built at RUNTIME from the descriptor, not emitted as literals.\n// protoc-gen-es embeds every file's FileDescriptorProto — options included —\n// in its `_pb.ts`, so the protovalidate rules (min/max, len, pattern, `in`,\n// formats) are read off `field.proto.options` (mock-rules.ts), with no buf.validate\n// TypeScript in the app and no per-project codegen beyond one import per\n// service. A vendored contract (another repo's protos, generated by its own\n// buf template) works the same as the project's own.\n//\n// What a value is, by field (the field's NAME is a hint, never vocabulary —\n// forge does not invent a domain the schema does not declare):\n//\n// `id` / `*_id` a stable id: `<thing>-<8 hex>`; `trace_id` and\n// `span_id` are 32/16 hex, as OpenTelemetry's are\n// Timestamp, `*_at` recent times; list items newest first; within one\n// message, `start*`/`created*` precede `end*`/`updated*`\n// `email`, `url`, ... example.com addresses and links\n// `name`, `title` \"<Message> <n>\", numbered by list position\n// other strings \"<field>-<n>\"\n// numbers a range the name suggests (`*_ms`, `count`, `port`,\n// `percent`, `*_bytes`, ...), else 1..100\n// enums cycle through the defined values (skipping the\n// zero UNSPECIFIED) across a list's items\n// repeated 3–10 items; maps 3–5 entries\n// oneof one member, chosen by the seed\n// Duration, Struct, Value, wrappers handled as their JSON forms suggest\n// `next_page_token` always \"\" — a mock that pages forever is a bug\n//\n// Then the field's protovalidate rules constrain it: `const` and `in` win,\n// numbers are clamped into gt/gte/lt/lte, strings meet len/min_len/max_len,\n// prefix/suffix/contains, the well-known formats (email, uri, uuid, hostname,\n// ip, ulid) and, where it is cheap, `pattern`. Repeated and map sizes honour\n// min_items/max_items and min_pairs/max_pairs. CEL rules are not evaluated.\n//\n// Determinism: every value is a function of (seed, field path). The seed of a\n// default handler is the method plus the request's wire bytes, so the same\n// request always gets the same answer, and a field added to a message does not\n// reshuffle the others. Scalar fields that the REQUEST also carries (by name\n// and type) echo the request — `GetWorkload{id}` answers that id, and a filter\n// field reads back as filtered — except paging and query controls.\nimport {\n create,\n isMessage,\n ScalarType,\n toBinary,\n type DescEnum,\n type DescField,\n type DescMessage,\n type DescMethod,\n type DescService,\n type JsonObject,\n type Message,\n type MessageInitShape,\n type MessageShape,\n} from \"@bufbuild/protobuf\";\nimport {\n rulesOf,\n type FieldRules,\n type NumRules,\n type StrFormat,\n type StrRules,\n} from \"./mock-rules.js\";\n\n// ── Options ─────────────────────────────────────────────────────────────\n\n/** Change how one message type is generated, wherever it appears. */\nexport interface MockFactory<Desc extends DescMessage = DescMessage> {\n readonly schema: Desc;\n readonly build: (ctx: MockFactoryContext<Desc>) => MockResult<Desc>;\n}\n\nexport interface MockFactoryContext<Desc extends DescMessage> {\n /** The default the engine built for this position. */\n readonly base: MessageShape<Desc>;\n /** Position in the enclosing list, or -1 outside one. */\n readonly index: number;\n /** The seed of this position: stable for the same request and path. */\n readonly seed: string;\n}\n\n/**\n * A factory's or handler's answer: a full message passes through; a plain\n * object is a PATCH onto the default (factories) or the full response\n * completed with zero values (handlers), as the engine's F5 contract says.\n */\nexport type MockResult<Desc extends DescMessage> =\n | MessageShape<Desc>\n | MessageInitShape<Desc>;\n\n/**\n * Typed factory helper: `mockFactory(TraceSummarySchema, ({ base, index }) =>\n * ({ rootService: index % 2 ? \"web\" : \"api\" }))` — the result is patched onto\n * the default for every TraceSummary the engine builds.\n */\nexport function mockFactory<Desc extends DescMessage>(\n schema: Desc,\n build: (ctx: MockFactoryContext<Desc>) => MockResult<Desc>,\n): MockFactory<Desc> {\n return { schema, build };\n}\n\nexport interface MockValueOptions {\n /** Seed of the value. Default: the schema's type name. */\n seed?: string;\n /**\n * The instant \"recent\" is measured from. Default: the minute the engine was\n * first used in this page, so values hold still for the session.\n */\n now?: Date | number;\n /** Nesting depth past which messages are left unset and lists empty. Default 6. */\n maxDepth?: number;\n /** Per-message-type overrides, applied wherever that type is built. */\n factories?: readonly MockFactory<DescMessage>[];\n}\n\n// ── Determinism ─────────────────────────────────────────────────────────\n\n/** FNV-1a, 32-bit: small, fast, and stable across engines. */\nfunction fnv1a(input: string | Uint8Array): number {\n let h = 0x811c9dc5;\n if (typeof input === \"string\") {\n for (let i = 0; i < input.length; i++) {\n h ^= input.charCodeAt(i);\n h = Math.imul(h, 0x01000193);\n }\n } else {\n for (const b of input) {\n h ^= b;\n h = Math.imul(h, 0x01000193);\n }\n }\n return h >>> 0;\n}\n\n/** mulberry32 over an FNV-1a seed: a deterministic stream per (seed, path). */\nclass Rng {\n private state: number;\n constructor(seed: string) {\n this.state = fnv1a(seed) || 0x9e3779b9;\n }\n next(): number {\n this.state = (this.state + 0x6d2b79f5) | 0;\n let t = this.state;\n t = Math.imul(t ^ (t >>> 15), t | 1);\n t ^= t + Math.imul(t ^ (t >>> 7), t | 61);\n return ((t ^ (t >>> 14)) >>> 0) / 4294967296;\n }\n /** An integer in [lo, hi], inclusive. */\n int(lo: number, hi: number): number {\n if (hi <= lo) return lo;\n return lo + Math.floor(this.next() * (hi - lo + 1));\n }\n pick<T>(items: readonly T[]): T {\n return items[this.int(0, items.length - 1)] as T;\n }\n hex(n: number): string {\n let out = \"\";\n while (out.length < n) out += this.int(0, 15).toString(16);\n return out;\n }\n}\n\nlet sessionNow: number | undefined;\n\nfunction anchorMs(now: Date | number | undefined): number {\n if (now !== undefined) return typeof now === \"number\" ? now : now.getTime();\n sessionNow ??= Math.floor(Date.now() / 60_000) * 60_000;\n return sessionNow;\n}\n\n// ── Names ───────────────────────────────────────────────────────────────\n\nconst words = (s: string) =>\n s\n .replace(/([a-z0-9])([A-Z])/g, \"$1_$2\")\n .toLowerCase()\n .split(/[^a-z0-9]+/)\n .filter(Boolean);\n\nconst kebab = (s: string) => words(s).join(\"-\");\n\n/** `labels` → `label`, `entries` → `entry`: a list item is one of the list. */\nfunction singularOf(s: string): string {\n if (/ies$/.test(s)) return s.slice(0, -3) + \"y\";\n if (/(ss|us|is)$/.test(s)) return s;\n return s.replace(/s$/, \"\");\n}\n\nfunction human(s: string): string {\n const w = words(s).join(\" \");\n return w.charAt(0).toUpperCase() + w.slice(1);\n}\n\n/** The thing a message stands for: `ListTracesResponse` → `List traces`. */\nfunction messageNoun(desc: DescMessage): string {\n return desc.name.replace(/(Request|Response)$/, \"\") || desc.name;\n}\n\nfunction hasWord(name: string, ...candidates: string[]): boolean {\n const w = words(name);\n return candidates.some((c) => w.includes(c));\n}\n\n// ── Strings ─────────────────────────────────────────────────────────────\n\n/** Paging and query controls: echoing or inventing them misleads the caller. */\nconst CONTROL_FIELDS = new Set([\n \"page_size\",\n \"page_token\",\n \"next_page_token\",\n \"order_by\",\n \"query\",\n \"search\",\n \"filter\",\n \"limit\",\n \"offset\",\n \"cursor\",\n]);\n\nfunction uuidFrom(rng: Rng): string {\n const h = rng.hex(32);\n return `${h.slice(0, 8)}-${h.slice(8, 12)}-4${h.slice(13, 16)}-${\"89ab\"[rng.int(0, 3)]}${h.slice(17, 20)}-${h.slice(20)}`;\n}\n\nfunction formatted(format: StrFormat, rng: Rng, n: number): string {\n switch (format) {\n case \"email\":\n return `user-${n}@example.com`;\n case \"uri\":\n return `https://example.com/${rng.hex(8)}`;\n case \"hostname\":\n case \"address\":\n return `host-${n}.example.com`;\n case \"hostAndPort\":\n return `host-${n}.example.com:8080`;\n case \"ip\":\n case \"ipv4\":\n return `10.${rng.int(0, 255)}.${rng.int(0, 255)}.${rng.int(1, 254)}`;\n case \"ipv6\":\n return `fd00::${rng.hex(4)}`;\n case \"ipPrefix\":\n return `10.${rng.int(0, 255)}.0.0/16`;\n case \"uuid\":\n return uuidFrom(rng);\n case \"tuuid\":\n return rng.hex(32);\n case \"ulid\": {\n const alphabet = \"0123456789ABCDEFGHJKMNPQRSTVWXYZ\";\n let s = \"01\";\n while (s.length < 26) s += alphabet[rng.int(0, 31)];\n return s;\n }\n }\n}\n\n/** A string for a field, from its name alone (before any rule applies). */\nfunction stringByName(\n name: string,\n owner: DescMessage,\n n: number,\n rng: Rng,\n listItem = false,\n): string {\n const w = words(name);\n const last = w[w.length - 1] ?? \"\";\n if (\n name === \"next_page_token\" ||\n name === \"page_token\" ||\n name === \"cursor\"\n ) {\n return \"\";\n }\n if (name === \"trace_id\") return rng.hex(32);\n if (name === \"span_id\" || name === \"parent_span_id\") return rng.hex(16);\n if (last === \"uuid\") return uuidFrom(rng);\n if (name === \"id\") return `${kebab(messageNoun(owner))}-${rng.hex(8)}`;\n if (last === \"id\" || last === \"ids\") {\n const thing = w.slice(0, -1).join(\"-\") || \"id\";\n return `${thing}-${rng.hex(8)}`;\n }\n if (last === \"email\" || last === \"emails\") return `user-${n}@example.com`;\n if ([\"url\", \"uri\", \"link\", \"href\", \"endpoint\", \"website\"].includes(last)) {\n return `https://example.com/${w.slice(0, -1).join(\"-\") || \"item\"}/${n}`;\n }\n if ([\"host\", \"hostname\", \"domain\", \"fqdn\"].includes(last)) {\n return `host-${n}.example.com`;\n }\n if (last === \"ip\" || name === \"ip_address\") {\n return `10.0.${rng.int(0, 255)}.${rng.int(1, 254)}`;\n }\n if (last === \"phone\") return `+1-555-01${String(n % 100).padStart(2, \"0\")}`;\n if (last === \"version\") return `1.${rng.int(0, 20)}.${rng.int(0, 9)}`;\n if (last === \"color\" || last === \"colour\") return `#${rng.hex(6)}`;\n if ([\"sha\", \"commit\", \"hash\", \"etag\", \"fingerprint\"].includes(last))\n return rng.hex(40);\n if (last === \"digest\") return `sha256:${rng.hex(64)}`;\n if (\n last === \"token\" ||\n last === \"secret\" ||\n (last === \"key\" && w.includes(\"api\"))\n ) {\n return `tok_${rng.hex(24)}`;\n }\n if (last === \"json\") return \"{}\";\n if (last === \"locale\" || last === \"language\") return \"en-US\";\n if (last === \"currency\") return \"USD\";\n if (last === \"country\") return \"US\";\n if (last === \"timezone\" || name === \"tz\") return \"UTC\";\n if ([\"name\", \"title\", \"label\"].includes(name) || name === \"display_name\") {\n return `${human(messageNoun(owner))} ${n}`;\n }\n if (last === \"name\" || last === \"title\") {\n return `${human(w.slice(0, -1).join(\"_\"))} ${n}`;\n }\n if (\n [\n \"description\",\n \"summary\",\n \"message\",\n \"body\",\n \"text\",\n \"details\",\n \"detail\",\n \"reason\",\n \"comment\",\n \"note\",\n \"notes\",\n \"content\",\n \"error\",\n ].includes(last)\n ) {\n return `Sample ${human(messageNoun(owner)).toLowerCase()} ${w.join(\" \")} ${n}.`;\n }\n return `${kebab(listItem ? singularOf(name) : name)}-${n}`;\n}\n\n/** The smallest string matching a cheap regex, or undefined when it is not cheap. */\nfunction fromPattern(pattern: string, rng: Rng): string | undefined {\n let i = 0;\n const src = pattern;\n\n type Node = () => string;\n\n const charClass = (): Node => {\n // At \"[\" — collect ranges; a negated class picks the first printable miss.\n i++;\n const negate = src[i] === \"^\";\n if (negate) i++;\n const ranges: Array<[number, number]> = [];\n let first = true;\n while (i < src.length && (src[i] !== \"]\" || first)) {\n first = false;\n let c = src[i++] as string;\n if (c === \"\\\\\") {\n const e = src[i++] as string;\n if (e === \"d\") {\n ranges.push([48, 57]);\n continue;\n }\n if (e === \"w\") {\n ranges.push([97, 122], [65, 90], [48, 57], [95, 95]);\n continue;\n }\n if (e === \"s\") {\n ranges.push([32, 32]);\n continue;\n }\n c = e;\n }\n if (src[i] === \"-\" && src[i + 1] !== \"]\" && i + 1 < src.length) {\n i++;\n let hi = src[i++] as string;\n if (hi === \"\\\\\") hi = src[i++] as string;\n ranges.push([c.charCodeAt(0), hi.charCodeAt(0)]);\n } else {\n ranges.push([c.charCodeAt(0), c.charCodeAt(0)]);\n }\n }\n i++; // \"]\"\n if (negate) {\n return () => {\n for (let code = 97; code < 127; code++) {\n if (!ranges.some(([lo, hi]) => code >= lo && code <= hi)) {\n return String.fromCharCode(code);\n }\n }\n return \"_\";\n };\n }\n return () => {\n const [lo, hi] = rng.pick(ranges);\n return String.fromCharCode(rng.int(lo, hi));\n };\n };\n\n const atom = (): Node | undefined => {\n const c = src[i];\n if (c === \"(\") {\n i++;\n if (src[i] === \"?\") {\n if (src[i + 1] !== \":\") return undefined; // lookarounds: not cheap\n i += 2;\n }\n const inner = alternation();\n if (src[i] !== \")\" || !inner) return undefined;\n i++;\n return inner;\n }\n if (c === \"[\") return charClass();\n if (c === \".\") {\n i++;\n return () => String.fromCharCode(rng.int(97, 122));\n }\n if (c === \"\\\\\") {\n const e = src[i + 1] as string;\n i += 2;\n if (e === \"d\") return () => String(rng.int(0, 9));\n if (e === \"w\") return () => String.fromCharCode(rng.int(97, 122));\n if (e === \"s\") return () => \" \";\n if (/[A-Za-z]/.test(e)) return undefined; // \\b, \\p{..}, ...: not cheap\n return () => e;\n }\n i++;\n return () => c as string;\n };\n\n const sequence = (): Node | undefined => {\n const parts: Node[] = [];\n while (i < src.length && src[i] !== \"|\" && src[i] !== \")\") {\n if (src[i] === \"^\" || src[i] === \"$\") {\n i++;\n continue;\n }\n const a = atom();\n if (!a) return undefined;\n let min = 1;\n let max = 1;\n const q = src[i];\n if (q === \"?\" || q === \"*\" || q === \"+\") {\n i++;\n min = q === \"+\" ? 1 : 0;\n max = q === \"?\" ? 1 : min + 3;\n } else if (q === \"{\") {\n const m = /^\\{(\\d+)(,(\\d*))?\\}/.exec(src.slice(i));\n if (!m) return undefined;\n i += m[0].length;\n min = Number(m[1]);\n max = m[2] ? (m[3] ? Number(m[3]) : min + 3) : min;\n }\n if (src[i] === \"?\") i++; // lazy: same strings\n const lo = min;\n const hi = Math.min(max, min + 3);\n parts.push(() => {\n let s = \"\";\n const count = rng.int(Math.max(lo, 1), Math.max(hi, 1));\n for (let k = 0; k < (lo === 0 && hi === 0 ? 0 : count); k++) s += a();\n return s;\n });\n }\n return () => parts.map((p) => p()).join(\"\");\n };\n\n const alternation = (): Node | undefined => {\n const branches: Node[] = [];\n for (;;) {\n const s = sequence();\n if (!s) return undefined;\n branches.push(s);\n if (src[i] !== \"|\") break;\n i++;\n }\n return () => rng.pick(branches)();\n };\n\n try {\n const re = new RegExp(pattern, \"u\");\n const node = alternation();\n if (!node || i < src.length) return undefined;\n for (let attempt = 0; attempt < 8; attempt++) {\n const s = node();\n if (re.test(s)) return s;\n }\n } catch {\n // An RE2 construct JavaScript does not accept: not cheap.\n }\n return undefined;\n}\n\nfunction applyStringRules(\n value: string,\n rules: StrRules,\n rng: Rng,\n n: number,\n): string {\n if (rules.const !== undefined) return rules.const;\n if (rules.in?.length) return rng.pick(rules.in);\n let s = value;\n if (rules.format) s = formatted(rules.format, rng, n);\n if (rules.pattern) {\n let ok = false;\n try {\n ok = new RegExp(rules.pattern, \"u\").test(s);\n } catch {\n ok = true; // not JavaScript-parsable: leave the value alone\n }\n if (!ok) s = fromPattern(rules.pattern, rng) ?? s;\n }\n if (rules.prefix && !s.startsWith(rules.prefix)) s = rules.prefix + s;\n if (rules.suffix && !s.endsWith(rules.suffix)) s = s + rules.suffix;\n if (rules.contains && !s.includes(rules.contains)) s = s + rules.contains;\n if (rules.notIn?.includes(s)) s = `${s}-${n}`;\n const min = rules.len ?? rules.minLen;\n const max = rules.len ?? rules.maxLen;\n const chars = [...s];\n if (max !== undefined && chars.length > max) {\n s = chars.slice(0, max).join(\"\");\n } else if (min !== undefined && chars.length < min) {\n s = s + \"x\".repeat(min - chars.length);\n }\n return s;\n}\n\n// ── Numbers ─────────────────────────────────────────────────────────────\n\nconst INT_LIMITS: Partial<Record<ScalarType, [number, number]>> = {\n [ScalarType.INT32]: [-2147483648, 2147483647],\n [ScalarType.SINT32]: [-2147483648, 2147483647],\n [ScalarType.SFIXED32]: [-2147483648, 2147483647],\n [ScalarType.UINT32]: [0, 4294967295],\n [ScalarType.FIXED32]: [0, 4294967295],\n [ScalarType.UINT64]: [0, Number.MAX_SAFE_INTEGER],\n [ScalarType.FIXED64]: [0, Number.MAX_SAFE_INTEGER],\n [ScalarType.INT64]: [-Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n [ScalarType.SINT64]: [-Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n [ScalarType.SFIXED64]: [-Number.MAX_SAFE_INTEGER, Number.MAX_SAFE_INTEGER],\n};\n\nconst isFloat = (t: ScalarType) =>\n t === ScalarType.DOUBLE || t === ScalarType.FLOAT;\nconst is64 = (t: ScalarType) =>\n t === ScalarType.INT64 ||\n t === ScalarType.UINT64 ||\n t === ScalarType.SINT64 ||\n t === ScalarType.FIXED64 ||\n t === ScalarType.SFIXED64;\n\n/** Epoch unit a time-valued integer field is in, from its name. */\nfunction epochUnit(name: string): number | undefined {\n const w = words(name);\n const timeish =\n hasWord(name, \"unix\", \"epoch\", \"timestamp\", \"at\") ||\n (w[w.length - 1] === \"time\" && !hasWord(name, \"duration\", \"elapsed\")) ||\n (w.includes(\"time\") &&\n hasWord(name, \"nano\", \"nanos\", \"ns\", \"ms\", \"millis\"));\n if (!timeish || hasWord(name, \"duration\", \"latency\", \"elapsed\", \"took\"))\n return undefined;\n if (hasWord(name, \"nano\", \"nanos\", \"ns\")) return 1e6;\n if (hasWord(name, \"us\", \"micros\")) return 1e3;\n if (hasWord(name, \"ms\", \"millis\")) return 1;\n return 1e-3;\n}\n\n/** The range a number's name suggests: [lo, hi]. */\nfunction numberRange(name: string, float: boolean): [number, number] {\n const durationish = hasWord(\n name,\n \"duration\",\n \"latency\",\n \"elapsed\",\n \"took\",\n \"time\",\n );\n if (durationish || hasWord(name, \"ms\", \"millis\")) {\n if (hasWord(name, \"ns\", \"nanos\", \"nano\")) return [100_000, 2_000_000_000];\n if (hasWord(name, \"us\", \"micros\")) return [100, 2_000_000];\n if (hasWord(name, \"seconds\", \"secs\", \"s\", \"sec\"))\n return float ? [0.01, 5] : [1, 120];\n return [1, 2000];\n }\n if (hasWord(name, \"seconds\", \"secs\")) return [1, 3600];\n if (hasWord(name, \"percent\", \"pct\", \"percentage\")) return [0, 100];\n if (\n hasWord(name, \"ratio\", \"fraction\", \"share\", \"probability\", \"rate\") &&\n float\n )\n return [0, 1];\n if (hasWord(name, \"rate\")) return [0, 100];\n if (hasWord(name, \"bytes\", \"size\") && !hasWord(name, \"page\"))\n return [1024, 104_857_600];\n if (hasWord(name, \"port\")) return [1024, 65535];\n if (hasWord(name, \"year\")) return [2020, 2026];\n if (hasWord(name, \"month\")) return [1, 12];\n if (hasWord(name, \"day\")) return [1, 28];\n if (hasWord(name, \"hour\")) return [0, 23];\n if (hasWord(name, \"minute\", \"second\")) return [0, 59];\n if (hasWord(name, \"lat\", \"latitude\")) return [-90, 90];\n if (hasWord(name, \"lng\", \"lon\", \"longitude\")) return [-180, 180];\n if (\n hasWord(\n name,\n \"version\",\n \"revision\",\n \"generation\",\n \"attempt\",\n \"attempts\",\n \"retry\",\n \"retries\",\n \"priority\",\n \"level\",\n \"rank\",\n )\n ) {\n return [1, 10];\n }\n if (name === \"severity_number\") return [1, 24];\n if (hasWord(name, \"cents\", \"price\", \"amount\", \"cost\"))\n return float ? [1, 1000] : [100, 100_000];\n if (\n hasWord(\n name,\n \"count\",\n \"total\",\n \"num\",\n \"number\",\n \"length\",\n \"requests\",\n \"errors\",\n \"hits\",\n \"calls\",\n \"events\",\n \"items\",\n \"value\",\n )\n ) {\n return [0, 1000];\n }\n return float ? [0, 1000] : [1, 100];\n}\n\n/** Clamp/choose a number by its rules. `step` is 1 for integers. */\nfunction applyNumRules(\n value: number,\n rules: NumRules | undefined,\n rng: Rng,\n float: boolean,\n): number {\n if (!rules) return value;\n if (rules.const !== undefined) return rules.const;\n if (rules.in?.length) return rng.pick(rules.in);\n const eps = float ? 0.01 : 1;\n let lo = -Infinity;\n let hi = Infinity;\n if (rules.gte !== undefined) lo = rules.gte;\n if (rules.gt !== undefined) lo = Math.max(lo, rules.gt + eps);\n if (rules.lte !== undefined) hi = rules.lte;\n if (rules.lt !== undefined) hi = Math.min(hi, rules.lt - eps);\n let v = value;\n // protovalidate allows an exclusive range (gt > lt: outside the band); then\n // either side is valid, and the value already on one side is kept.\n const exclusive = lo > hi;\n if (!exclusive) {\n if (v < lo || v > hi) {\n const width = Number.isFinite(hi - lo) ? hi - lo : 100;\n v =\n lo === -Infinity\n ? hi - rng.next() * Math.min(width, 100)\n : lo + rng.next() * Math.min(width, 100);\n }\n v = Math.min(Math.max(v, lo), hi);\n } else if (v < lo && v > hi) {\n v = lo;\n }\n if (!float) v = Math.round(v);\n if (!float && rules.gt !== undefined && v <= rules.gt) v = rules.gt + 1;\n if (!float && rules.lt !== undefined && v >= rules.lt) v = rules.lt - 1;\n for (let k = 0; rules.notIn?.includes(v) && k < 100; k++) v += eps;\n return v;\n}\n\n/** Two decimals, unless rounding would step outside the rules' bounds. */\nfunction roundWithin(v: number, rules: NumRules | undefined): number {\n if (rules?.const !== undefined || rules?.in?.length) return v;\n const r = Math.round(v * 100) / 100;\n const lo = rules?.gt ?? rules?.gte ?? -Infinity;\n const hi = rules?.lt ?? rules?.lte ?? Infinity;\n const inside = r >= lo && r <= hi && r !== rules?.gt && r !== rules?.lt;\n return inside ? r : v;\n}\n\n// ── The walk ────────────────────────────────────────────────────────────\n\ninterface Ctx {\n seed: string;\n path: string;\n /** Position in the nearest enclosing list, or -1. */\n index: number;\n depth: number;\n maxDepth: number;\n now: number;\n /** Time the current message's own timestamps are anchored at. */\n baseTime: number;\n stack: readonly string[];\n echo: ReadonlyMap<string, Echo>;\n factories: ReadonlyMap<string, MockFactory<DescMessage>>;\n}\n\ninterface Echo {\n value: unknown;\n scalar?: ScalarType;\n enumType?: string;\n}\n\nconst rngAt = (ctx: Ctx, key: string) =>\n new Rng(`${ctx.seed}|${ctx.path}.${key}`);\n\n/** The number list items are labelled with: their position, else a small stable one. */\nconst ordinal = (ctx: Ctx, rng: Rng) =>\n ctx.index >= 0 ? ctx.index + 1 : rng.int(1, 9);\n\n/** Schemas the engine has walked, so `patch` can rebuild a nested message. */\nconst knownSchemas = new Map<string, DescMessage>();\n\nfunction collectEcho(schema: DescMessage, message: Message): Map<string, Echo> {\n const out = new Map<string, Echo>();\n const walk = (\n desc: DescMessage,\n msg: Record<string, unknown>,\n depth: number,\n ) => {\n for (const f of desc.fields) {\n if (f.oneof) continue;\n const v = msg[f.localName];\n if (v == null) continue;\n if (f.fieldKind === \"scalar\") {\n if (f.scalar === ScalarType.BOOL || f.scalar === ScalarType.BYTES)\n continue;\n if (v === \"\" || v === 0 || v === 0n || CONTROL_FIELDS.has(f.name))\n continue;\n if (!out.has(f.name)) out.set(f.name, { value: v, scalar: f.scalar });\n } else if (f.fieldKind === \"enum\") {\n if (v === 0) continue;\n if (!out.has(f.name))\n out.set(f.name, { value: v, enumType: f.enum.typeName });\n } else if (f.fieldKind === \"message\" && depth < 2 && isMessage(v)) {\n walk(f.message, v as unknown as Record<string, unknown>, depth + 1);\n }\n }\n };\n walk(schema, message as unknown as Record<string, unknown>, 0);\n return out;\n}\n\nfunction echoFor(\n ctx: Ctx,\n name: string,\n scalar?: ScalarType,\n enumType?: string,\n): Echo | undefined {\n // A bare `id` is the record's own key: echo it only on the answer's top\n // record, never on list items or nested records (they would all collide).\n if (name === \"id\" && (ctx.index >= 0 || ctx.depth > 1)) return undefined;\n if (CONTROL_FIELDS.has(name)) return undefined;\n const e = ctx.echo.get(name);\n if (!e) return undefined;\n if (scalar !== undefined && e.scalar !== scalar) {\n // Same family is good enough: an int32 filter echoes into an int64 field.\n const fam = (t: ScalarType | undefined) =>\n t === undefined\n ? \"?\"\n : t === ScalarType.STRING\n ? \"s\"\n : isFloat(t)\n ? \"f\"\n : \"i\";\n if (fam(e.scalar) !== fam(scalar)) return undefined;\n }\n if (enumType !== undefined && e.enumType !== enumType) return undefined;\n return e;\n}\n\nfunction scalarValue(\n scalar: ScalarType,\n name: string,\n owner: DescMessage,\n rules: FieldRules | undefined,\n ctx: Ctx,\n longAsString: boolean,\n): unknown {\n const rng = rngAt(ctx, name);\n const n = ordinal(ctx, rng);\n const echo = echoFor(ctx, name, scalar);\n if (echo) return coerceScalar(scalar, echo.value, longAsString);\n\n switch (scalar) {\n case ScalarType.STRING: {\n const s = stringByName(name, owner, n, rng, ctx.index >= 0);\n return rules?.str ? applyStringRules(s, rules.str, rng, n) : s;\n }\n case ScalarType.BOOL: {\n if (rules?.bool !== undefined) return rules.bool;\n const likely = hasWord(\n name,\n \"enabled\",\n \"active\",\n \"healthy\",\n \"success\",\n \"ok\",\n \"valid\",\n \"available\",\n \"ready\",\n \"visible\",\n \"verified\",\n \"public\",\n );\n const rare = hasWord(\n name,\n \"deleted\",\n \"disabled\",\n \"failed\",\n \"error\",\n \"errors\",\n \"truncated\",\n \"partial\",\n \"archived\",\n \"hidden\",\n \"locked\",\n \"null\",\n \"unknown\",\n \"expired\",\n \"revoked\",\n \"blocked\",\n \"provisional\",\n \"only\",\n );\n return rng.next() < (likely ? 0.85 : rare ? 0.15 : 0.5);\n }\n case ScalarType.BYTES: {\n const len = bytesLength(owner, name, rules?.bytes);\n const out = new Uint8Array(len);\n for (let k = 0; k < len; k++) out[k] = rng.int(0, 255);\n return out;\n }\n default: {\n const float = isFloat(scalar);\n const unit = float ? undefined : epochUnit(name);\n let v: number;\n if (unit !== undefined && is64(scalar)) {\n // Epoch values: exact, so they are generated in bigint space.\n const ms = ctx.baseTime - rng.int(0, 30_000);\n const big =\n unit >= 1 ? BigInt(ms) * BigInt(unit) : BigInt(Math.floor(ms / 1000));\n return longAsString ? big.toString() : big;\n } else if (unit !== undefined) {\n v = Math.floor((ctx.baseTime - rng.int(0, 30_000)) / 1000);\n } else {\n const [lo, hi] = numberRange(name, float);\n v = float\n ? Math.round((lo + rng.next() * (hi - lo)) * 100) / 100\n : rng.int(lo, hi);\n }\n v = applyNumRules(v, rules?.num, rng, float);\n if (float) v = roundWithin(v, rules?.num);\n const limits = INT_LIMITS[scalar];\n if (limits) v = Math.min(Math.max(Math.round(v), limits[0]), limits[1]);\n return coerceScalar(scalar, v, longAsString);\n }\n }\n}\n\n/**\n * Length of a generated bytes value: 16 unless the rules say otherwise.\n * Bounds no value can satisfy throw, naming the field, rather than emit a\n * value the server's protovalidate would reject.\n */\nfunction bytesLength(\n owner: DescMessage,\n name: string,\n b: FieldRules[\"bytes\"],\n): number {\n const min = Math.max(b?.len ?? 0, b?.minLen ?? 0);\n const max = Math.min(b?.len ?? Infinity, b?.maxLen ?? Infinity);\n if (min > max)\n throw new Error(\n `mock values: ${owner.typeName}.${name} has bytes rules no value satisfies ` +\n `(len ${b?.len ?? \"-\"}, min_len ${b?.minLen ?? \"-\"}, max_len ${b?.maxLen ?? \"-\"})`,\n );\n return Math.min(Math.max(16, min), max);\n}\n\nfunction coerceScalar(\n scalar: ScalarType,\n v: unknown,\n longAsString: boolean,\n): unknown {\n if (is64(scalar)) {\n const big = typeof v === \"bigint\" ? v : BigInt(Math.round(Number(v)));\n return longAsString ? big.toString() : big;\n }\n if (scalar === ScalarType.STRING) return String(v);\n if (typeof v === \"bigint\") return Number(v);\n return v;\n}\n\nfunction enumValue(\n e: DescEnum,\n name: string,\n rules: FieldRules | undefined,\n ctx: Ctx,\n): number {\n const echo = echoFor(ctx, name, undefined, e.typeName);\n if (echo) return echo.value as number;\n const r = rules?.enm;\n if (r?.const !== undefined) return r.const;\n let values = e.values.map((v) => v.number);\n // Skip the proto3 zero (\"UNSPECIFIED\") when anything else is defined.\n if (values.length > 1) values = values.filter((v) => v !== 0);\n if (r?.in?.length) values = values.filter((v) => r.in!.includes(v));\n if (r?.notIn?.length) values = values.filter((v) => !r.notIn!.includes(v));\n if (values.length === 0) return r?.in?.[0] ?? e.values[0]?.number ?? 0;\n // Cycle across a list: item i takes value (offset + i), so a list of n\n // items shows every value once before any repeats.\n const offset = new Rng(\n `${ctx.seed}|${ctx.path.replace(/\\[\\d+\\]/g, \"\")}.${name}`,\n ).int(0, values.length - 1);\n const i = ctx.index >= 0 ? ctx.index : 0;\n return values[(offset + i) % values.length] as number;\n}\n\n/** Recent instant for a Timestamp field, respecting start/end order and rules. */\nfunction timestampMs(\n name: string,\n rules: FieldRules | undefined,\n ctx: Ctx,\n): number {\n const rng = rngAt(ctx, name);\n let ms: number;\n if (\n hasWord(\n name,\n \"end\",\n \"ended\",\n \"finish\",\n \"finished\",\n \"completed\",\n \"updated\",\n \"last\",\n \"stop\",\n \"stopped\",\n \"until\",\n \"to\",\n \"modified\",\n \"resolved\",\n \"closed\",\n )\n ) {\n ms = ctx.baseTime;\n } else if (\n hasWord(\n name,\n \"start\",\n \"started\",\n \"created\",\n \"first\",\n \"since\",\n \"from\",\n \"begin\",\n \"opened\",\n \"submitted\",\n )\n ) {\n ms = ctx.baseTime - rng.int(1_000, 120_000);\n } else if (\n hasWord(\n name,\n \"expires\",\n \"expiry\",\n \"expiration\",\n \"deadline\",\n \"due\",\n \"next\",\n \"scheduled\",\n )\n ) {\n ms = ctx.now + rng.int(3_600_000, 7 * 86_400_000);\n } else {\n ms = ctx.baseTime - rng.int(0, 30_000);\n }\n const t = rules?.timestamp;\n if (t) {\n if (t.const !== undefined) return t.const;\n if (t.gtNow) ms = Math.max(ms, ctx.now + rng.int(60_000, 86_400_000));\n if (t.ltNow) ms = Math.min(ms, ctx.now - 1_000);\n if (t.withinMs !== undefined)\n ms = Math.min(\n Math.max(ms, ctx.now - t.withinMs + 1_000),\n ctx.now + t.withinMs - 1_000,\n );\n ms = applyNumRules(ms, t, rng, false);\n }\n return ms;\n}\n\nfunction timestampInit(ms: number) {\n const seconds = Math.floor(ms / 1000);\n return { seconds: BigInt(seconds), nanos: (ms - seconds * 1000) * 1_000_000 };\n}\n\nfunction durationInit(name: string, rules: FieldRules | undefined, ctx: Ctx) {\n const rng = rngAt(ctx, name);\n let seconds = hasWord(\n name,\n \"timeout\",\n \"ttl\",\n \"interval\",\n \"period\",\n \"window\",\n \"retention\",\n \"expiry\",\n \"max\",\n \"age\",\n )\n ? rng.int(30, 3600)\n : Math.round((0.005 + rng.next() * 5) * 1000) / 1000;\n seconds = applyNumRules(seconds, rules?.duration, rng, true);\n const ms = Math.round(seconds * 1000) / 1000;\n const d = rules?.duration;\n if (\n (d?.gt === undefined || ms > d.gt) &&\n (d?.gte === undefined || ms >= d.gte) &&\n (d?.lt === undefined || ms < d.lt) &&\n (d?.lte === undefined || ms <= d.lte)\n ) {\n seconds = ms;\n }\n const whole = Math.floor(seconds);\n return { seconds: BigInt(whole), nanos: Math.round((seconds - whole) * 1e9) };\n}\n\nfunction jsonObject(name: string, ctx: Ctx): JsonObject {\n const rng = rngAt(ctx, name);\n const out: JsonObject = {};\n const stem = kebab(name).replace(/s$/, \"\") || \"key\";\n const count = rng.int(2, 4);\n for (let k = 1; k <= count; k++) out[`${stem}-${k}`] = `value-${k}`;\n return out;\n}\n\nconst WKT_TIMESTAMP = \"google.protobuf.Timestamp\";\nconst WKT_DURATION = \"google.protobuf.Duration\";\nconst WKT_STRUCT = \"google.protobuf.Struct\";\nconst WKT_VALUE = \"google.protobuf.Value\";\nconst WKT_LIST_VALUE = \"google.protobuf.ListValue\";\nconst WRAPPERS = new Set([\n \"google.protobuf.DoubleValue\",\n \"google.protobuf.FloatValue\",\n \"google.protobuf.Int64Value\",\n \"google.protobuf.UInt64Value\",\n \"google.protobuf.Int32Value\",\n \"google.protobuf.UInt32Value\",\n \"google.protobuf.BoolValue\",\n \"google.protobuf.StringValue\",\n \"google.protobuf.BytesValue\",\n]);\nconst LEAVE_UNSET = new Set([\n \"google.protobuf.Any\",\n \"google.protobuf.FieldMask\",\n \"google.protobuf.Empty\",\n]);\n\n/**\n * The init value for one message-typed position. `unboxed` is true where\n * protobuf-es represents a wrapper as its primitive and a Struct as a\n * JsonObject (a singular field outside a oneof; Struct in lists too).\n */\nfunction messageAt(\n msg: DescMessage,\n name: string,\n owner: DescMessage,\n rules: FieldRules | undefined,\n ctx: Ctx,\n unboxed: boolean,\n): unknown {\n switch (msg.typeName) {\n case WKT_TIMESTAMP:\n return timestampInit(timestampMs(name, rules, ctx));\n case WKT_DURATION:\n return durationInit(name, rules, ctx);\n case WKT_STRUCT:\n return unboxed ? jsonObject(name, ctx) : undefined;\n case WKT_VALUE:\n return {\n kind: {\n case: \"stringValue\",\n value: `${kebab(name)}-${ordinal(ctx, rngAt(ctx, name))}`,\n },\n };\n case WKT_LIST_VALUE:\n return {\n values: [1, 2, 3].map((k) => ({\n kind: { case: \"stringValue\", value: `${kebab(name)}-${k}` },\n })),\n };\n }\n if (WRAPPERS.has(msg.typeName)) {\n const inner = msg.fields[0];\n if (!inner || inner.fieldKind !== \"scalar\") return undefined;\n const v = scalarValue(\n inner.scalar,\n name,\n owner,\n rules,\n ctx,\n inner.longAsString,\n );\n return unboxed ? v : { value: v };\n }\n if (LEAVE_UNSET.has(msg.typeName)) return undefined;\n // Depth and recursion guards: a self-referencing type nests once.\n if (ctx.depth >= ctx.maxDepth) return undefined;\n if (ctx.stack.filter((t) => t === msg.typeName).length >= 2) return undefined;\n return buildMessage(msg, ctx);\n}\n\nfunction singular(\n field: DescField,\n owner: DescMessage,\n rules: FieldRules | undefined,\n ctx: Ctx,\n index: number,\n unboxed: boolean,\n): unknown {\n // A list item or map value is generated at its own path, so items differ.\n const at: Ctx =\n index >= 0 ? { ...ctx, index, path: `${ctx.path}[${index}]` } : ctx;\n const f = field as {\n scalar?: ScalarType;\n enum?: DescEnum;\n message?: DescMessage;\n longAsString?: boolean;\n };\n const kind =\n field.fieldKind === \"list\"\n ? field.listKind\n : field.fieldKind === \"map\"\n ? field.mapKind\n : field.fieldKind;\n switch (kind) {\n case \"scalar\":\n return scalarValue(\n f.scalar as ScalarType,\n field.name,\n owner,\n rules,\n at,\n f.longAsString ?? false,\n );\n case \"enum\":\n return enumValue(f.enum as DescEnum, field.name, rules, at);\n default: {\n const msg = f.message as DescMessage;\n const c: Ctx = {\n ...at,\n path: `${at.path}.${field.name}`,\n depth: ctx.depth + 1,\n stack: [...ctx.stack, msg.typeName],\n };\n return messageAt(msg, field.name, owner, rules, c, unboxed);\n }\n }\n}\n\nfunction listCount(\n rules: FieldRules | undefined,\n ctx: Ctx,\n name: string,\n fallbackMax: number,\n): number {\n const rng = rngAt(ctx, `${name}#count`);\n const r = rules?.repeated;\n const min = r?.minItems ?? 0;\n const max = r?.maxItems ?? Infinity;\n // Past half the depth budget lists shrink to their minimum, so a deep tree\n // of repeated messages stays a few hundred values rather than thousands.\n if (ctx.depth * 2 > ctx.maxDepth) return min;\n const n = rng.int(3, fallbackMax);\n return Math.max(min, Math.min(max, n));\n}\n\nfunction buildMessage(desc: DescMessage, ctx: Ctx): MessageShape<DescMessage> {\n knownSchemas.set(desc.typeName, desc);\n const rng = rngAt(ctx, \"#time\");\n // Newest first across a list: item i sits ~i·4 minutes before the anchor.\n const baseTime =\n ctx.index >= 0\n ? ctx.now - ctx.index * 240_000 - rng.int(0, 120_000)\n : ctx.now - rng.int(0, 3_600_000);\n const here: Ctx = { ...ctx, baseTime };\n const init: Record<string, unknown> = {};\n\n for (const member of desc.members) {\n if (member.kind === \"oneof\") {\n const fields = member.fields;\n if (fields.length === 0) continue;\n const pick = fields[\n rngAt(here, `${member.name}#case`).int(0, fields.length - 1)\n ] as DescField;\n const value = singular(pick, desc, rulesOf(pick), here, -1, false);\n if (value !== undefined)\n init[member.localName] = { case: pick.localName, value };\n continue;\n }\n const field = member;\n const rules = rulesOf(field);\n if (field.fieldKind === \"list\") {\n const count = listCount(rules, here, field.name, 10);\n const itemRules = rules?.repeated?.items;\n const items: unknown[] = [];\n for (let i = 0; i < count; i++) {\n const v = singular(\n field,\n desc,\n itemRules,\n here,\n i,\n field.listKind === \"message\" && field.message.typeName === WKT_STRUCT,\n );\n if (v !== undefined) items.push(v);\n }\n init[field.localName] = items;\n } else if (field.fieldKind === \"map\") {\n const r = rules?.map;\n const mrng = rngAt(here, `${field.name}#pairs`);\n let count = mrng.int(3, 5);\n if (here.depth * 2 > here.maxDepth) count = 0;\n count = Math.max(\n r?.minPairs ?? 0,\n Math.min(r?.maxPairs ?? Infinity, count),\n );\n const out: Record<string, unknown> = {};\n const stem = kebab(field.name).replace(/s$/, \"\") || \"key\";\n for (let i = 0; i < count; i++) {\n let key: string;\n if (field.mapKey === ScalarType.STRING) {\n key = `${stem}-${i + 1}`;\n if (r?.keys?.str)\n key = applyStringRules(key, r.keys.str, mrng, i + 1);\n } else if (field.mapKey === ScalarType.BOOL) {\n if (i > 1) break;\n key = String(i === 0);\n } else {\n key = String(applyNumRules(i + 1, r?.keys?.num, mrng, false));\n }\n const at: Ctx = { ...here, path: `${here.path}.${field.name}{${key}}` };\n const v =\n field.mapKind === \"scalar\" && field.scalar === ScalarType.STRING\n ? applyStringRules(\n `value-${i + 1}`,\n r?.values?.str ?? {},\n rngAt(at, \"value\"),\n i + 1,\n )\n : singular(field, desc, r?.values, at, i, false);\n if (v !== undefined) out[key] = v;\n }\n init[field.localName] = out;\n } else {\n const v = singular(\n field,\n desc,\n rules,\n here,\n -1,\n field.fieldKind === \"message\",\n );\n if (v !== undefined) init[field.localName] = v;\n }\n }\n\n // A count beside the one list it counts reads as that list's length.\n const lists = desc.fields.filter(\n (f) => f.fieldKind === \"list\" && f.listKind === \"message\",\n );\n if (lists.length === 1) {\n const total = desc.fields.find(\n (f) =>\n f.fieldKind === \"scalar\" &&\n [\"total_count\", \"total_size\", \"total\", \"total_items\"].includes(f.name),\n );\n if (total && total.fieldKind === \"scalar\") {\n const len = (init[(lists[0] as DescField).localName] as unknown[]).length;\n init[total.localName] = coerceScalar(\n total.scalar,\n len,\n total.longAsString,\n );\n }\n }\n\n let message = create(desc, init as MessageInitShape<DescMessage>);\n const factory = ctx.factories.get(desc.typeName);\n if (factory) {\n const result = factory.build({\n base: message,\n index: ctx.index,\n seed: `${ctx.seed}|${ctx.path}`,\n });\n message = isMessage(result)\n ? (result as MessageShape<DescMessage>)\n : patch(message, result as PatchShape<Message>);\n }\n return message;\n}\n\n/**\n * One deterministic, schema-valid message of `schema` — see the header for\n * what each field becomes. Same options, same message.\n */\nexport function mockValue<Desc extends DescMessage>(\n schema: Desc,\n options: MockValueOptions = {},\n): MessageShape<Desc> {\n return buildValue(schema, options);\n}\n\n/** mockValue, echoing `echo`'s scalar fields (the default handlers pass the request). */\nfunction buildValue<Desc extends DescMessage>(\n schema: Desc,\n options: MockValueOptions,\n echo?: { schema: DescMessage; message: Message },\n): MessageShape<Desc> {\n const now = anchorMs(options.now);\n const ctx: Ctx = {\n seed: options.seed ?? schema.typeName,\n path: \"\",\n index: -1,\n depth: 0,\n maxDepth: options.maxDepth ?? 6,\n now,\n baseTime: now,\n stack: [schema.typeName],\n echo: echo ? collectEcho(echo.schema, echo.message) : new Map(),\n factories: new Map(\n (options.factories ?? []).map((f) => [f.schema.typeName, f]),\n ),\n };\n return buildMessage(schema, ctx) as MessageShape<Desc>;\n}\n\nfunction knownSchemaOf(message: Message): DescMessage | undefined {\n return knownSchemas.get(message.$typeName);\n}\n\n// ── patch ───────────────────────────────────────────────────────────────\n\ntype PatchValue<V> = V extends Message\n ? PatchShape<V> | V\n : V extends readonly (infer E)[]\n ? E extends Message\n ? readonly (E | PatchShape<E>)[]\n : V\n : V;\n\n/** A deep partial of a message: nested messages merge, lists and maps replace. */\nexport type PatchShape<T extends Message> = {\n [K in Exclude<keyof T, \"$typeName\" | \"$unknown\">]?: PatchValue<T[K]>;\n};\n\nfunction isPlainObject(v: unknown): v is Record<string, unknown> {\n return (\n typeof v === \"object\" &&\n v !== null &&\n !Array.isArray(v) &&\n !(v instanceof Uint8Array) &&\n !isMessage(v)\n );\n}\n\n/**\n * Deep-merge `changes` onto `base` and return a NEW message (base is not\n * mutated). A nested message merges field by field; a list, a map, a oneof\n * and a scalar are replaced. Partial list items are completed with zero\n * values, as `create()` would.\n *\n * const res = defaults.listTraces(req);\n * return patch(res, { traces: res.traces.slice(0, 2), red: { errorRate: 0.5 } });\n */\nexport function patch<T extends Message>(base: T, changes: PatchShape<T>): T {\n const desc = knownSchemaOf(base);\n const merged = mergeInit(\n desc,\n base as unknown as Record<string, unknown>,\n changes as Record<string, unknown>,\n );\n return (desc ? rebuild(desc, merged) : merged) as unknown as T;\n}\n\n/**\n * create() over a merged init. The init still carries the base's $typeName,\n * and create() returns anything that looks like a message untouched — which\n * would leave a partial list item uncompleted — so the marker is dropped.\n */\nfunction rebuild(desc: DescMessage, init: Record<string, unknown>): Message {\n const { $typeName: _drop, ...fields } = init;\n return create(desc, fields as MessageInitShape<DescMessage>);\n}\n\nfunction mergeInit(\n desc: DescMessage | undefined,\n base: Record<string, unknown>,\n changes: Record<string, unknown>,\n): Record<string, unknown> {\n const out: Record<string, unknown> = { ...base };\n for (const [key, value] of Object.entries(changes)) {\n if (value === undefined) continue;\n const field = desc?.fields.find((f) => f.localName === key);\n const current = base[key];\n if (\n isPlainObject(value) &&\n isMessage(current) &&\n (!field || (field.fieldKind === \"message\" && !field.oneof))\n ) {\n const nested =\n field?.fieldKind === \"message\" ? field.message : knownSchemaOf(current);\n const m = mergeInit(\n nested,\n current as unknown as Record<string, unknown>,\n value,\n );\n out[key] = nested ? rebuild(nested, m) : m;\n } else {\n out[key] = value;\n }\n }\n return out;\n}\n\n// ── Services ────────────────────────────────────────────────────────────\n\ntype MethodsOf<S extends DescService> = S[\"method\"];\ntype InputOf<M> = M extends { input: infer I extends DescMessage }\n ? I\n : DescMessage;\ntype OutputOf<M> = M extends { output: infer O extends DescMessage }\n ? O\n : DescMessage;\ntype Streams<M> = M extends {\n methodKind: \"server_streaming\" | \"bidi_streaming\";\n}\n ? true\n : false;\n\n/** A request as a default handler accepts it: the message, an init shape, or nothing. */\nexport type MockRequest<M> =\n | MessageShape<InputOf<M>>\n | MessageInitShape<InputOf<M>>;\n\n/** One RPC's default: a response, or — for a server or bidi stream — a short stream of them. */\nexport type DefaultHandler<M> =\n Streams<M> extends true\n ? (\n req?: MockRequest<M> | readonly MockRequest<M>[],\n ) => MessageShape<OutputOf<M>>[]\n : (\n req?: MockRequest<M> | readonly MockRequest<M>[],\n ) => MessageShape<OutputOf<M>>;\n\n/**\n * Every RPC of a service, answered from its descriptor. `$service` names the\n * service (non-enumerable, so the object spreads as its handlers alone).\n */\nexport type ServiceDefaults<S extends DescService = DescService> = {\n readonly [K in keyof MethodsOf<S>]: DefaultHandler<MethodsOf<S>[K]>;\n} & { readonly $service: S };\n\n/** Messages in a default stream. */\nconst STREAM_LENGTH = 3;\n\nconst defaultsCache = new WeakMap<DescService, ServiceDefaults>();\n\nfunction requestMessage(method: DescMethod, req: unknown): Message {\n return isMessage(req)\n ? req\n : create(method.input, (req ?? {}) as MessageInitShape<DescMessage>);\n}\n\n/** The seed of one call: the method plus the request's wire bytes. */\nfunction callSeed(method: DescMethod, reqs: readonly Message[]): string {\n let digest = \"\";\n for (const r of reqs) {\n try {\n digest += fnv1a(toBinary(method.input, r)).toString(16) + \".\";\n } catch {\n digest += \"?.\";\n }\n }\n return `${method.parent.typeName}/${method.name}:${digest}`;\n}\n\n/**\n * The default handlers of every RPC of `service`: a deterministic,\n * schema-valid response per request (a 3-message stream for server and bidi\n * streams). Generated `src/mocks/services/*_gen.ts` modules export one per\n * service, and the mock transport serves them for any RPC that no scenario,\n * passthrough or entity fixture answered.\n *\n * Without options the result is memoized per service, so every caller shares\n * one object.\n */\nexport function serviceDefaults<S extends DescService>(\n service: S,\n options: Omit<MockValueOptions, \"seed\"> = {},\n): ServiceDefaults<S> {\n const plain =\n options.now === undefined &&\n options.maxDepth === undefined &&\n !options.factories?.length;\n if (plain) {\n const cached = defaultsCache.get(service);\n if (cached) return cached as unknown as ServiceDefaults<S>;\n }\n const out: Record<string, unknown> = {};\n for (const method of service.methods) {\n const streams =\n method.methodKind === \"server_streaming\" ||\n method.methodKind === \"bidi_streaming\";\n out[method.localName] = (req?: unknown) => {\n const reqs = (Array.isArray(req) ? req : [req]).map((r) =>\n requestMessage(method, r),\n );\n const seed = callSeed(method, reqs);\n const last = reqs[reqs.length - 1];\n const echo = last ? { schema: method.input, message: last } : undefined;\n const one = (s: string) =>\n buildValue(method.output, { ...options, seed: s }, echo);\n if (!streams) return one(seed);\n return Array.from({ length: STREAM_LENGTH }, (_, i) =>\n one(`${seed}#${i}`),\n );\n };\n }\n Object.defineProperty(out, \"$service\", { value: service, enumerable: false });\n const defaults = out as unknown as ServiceDefaults<S>;\n if (plain) defaultsCache.set(service, defaults as unknown as ServiceDefaults);\n return defaults;\n}\n\n/**\n * Any service's defaults, as the transport and the generated registry hold\n * them: a list of ServiceDefaults<S> for different S has only `$service` in\n * common (their handlers' request types differ).\n */\nexport interface AnyServiceDefaults {\n readonly $service: DescService;\n}\n\n/** True for what {@link serviceDefaults} returns — how the generated registry finds them. */\nexport function isServiceDefaults(value: unknown): value is AnyServiceDefaults {\n if (typeof value !== \"object\" || value === null) return false;\n const service = (value as { $service?: { kind?: unknown } }).$service;\n return (\n typeof service === \"object\" &&\n service !== null &&\n service.kind === \"service\"\n );\n}\n\ntype Awaitable<T> = T | Promise<T>;\n\n/** One RPC's override: handed the typed request and the service's defaults. */\nexport type MockOverride<S extends DescService, M> =\n Streams<M> extends true\n ? (\n req: MessageShape<InputOf<M>>,\n defaults: ServiceDefaults<S>,\n ) =>\n | Awaitable<Iterable<MockResult<OutputOf<M>>>>\n | AsyncIterable<MockResult<OutputOf<M>>>\n : (\n req: MessageShape<InputOf<M>>,\n defaults: ServiceDefaults<S>,\n ) => Awaitable<MockResult<OutputOf<M>>>;\n\nexport type MockOverrides<S extends DescService> = {\n readonly [K in keyof MethodsOf<S>]?: MockOverride<S, MethodsOf<S>[K]>;\n};\n\n/**\n * Scenario handlers, keyed `${serviceTypeName}/${methodName}` — spread into a\n * scenario's `handlers`, or a test's `mockTransport({...})`. The handlers'\n * request parameter is typed by the override that produced them; the map's\n * own type stays open so it spreads into any handler table.\n */\nexport type MockHandlers = Record<string, (req: any) => any>;\n\n/**\n * Typed overrides for one service, as scenario handlers:\n *\n * handlers: {\n * ...mockService(ObservabilityService, {\n * listTraces: (req, d) => patch(d.listTraces(req), { traces: [] }),\n * }),\n * }\n *\n * Each override receives the typed request and the service's defaults (built\n * with `options.factories` when given). Only overridden RPCs get a handler —\n * the rest fall through to the transport's own defaults — unless factories\n * are given, in which case every RPC is answered with them.\n */\nexport function mockService<S extends DescService>(\n service: S,\n overrides: MockOverrides<S>,\n options: Omit<MockValueOptions, \"seed\"> = {},\n): MockHandlers {\n const defaults = serviceDefaults(service, options);\n const out: MockHandlers = {};\n const everyMethod = (options.factories?.length ?? 0) > 0;\n for (const method of service.methods) {\n const override = (\n overrides as Record<\n string,\n ((req: unknown, d: unknown) => unknown) | undefined\n >\n )[method.localName];\n const fallback = (\n defaults as unknown as Record<string, (req: unknown) => unknown>\n )[method.localName];\n if (!override && !everyMethod) continue;\n out[`${service.typeName}/${method.name}`] = override\n ? (req: unknown) => override(requestMessage(method, req), defaults)\n : (req: unknown) => fallback?.(req);\n }\n return out;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reliantlabs/forge-web-runtime",
3
- "version": "0.13.3",
3
+ "version": "0.13.4",
4
4
  "description": "The forge frontend runtime: Connect interceptor stack, session, error boundary, toast queue, <Resource> container, W3C trace propagation and the HyperDX browser SDK wiring (errors, console, network, traces; replay off by default). The web twin of forge/pkg.",
5
5
  "license": "Apache-2.0",
6
6
  "//repository note": "REQUIRED for `npm publish --provenance`, not decoration. npm cross-checks this against the repository in the signed provenance statement and rejects the publish with a 422 if they disagree — an absent field reads as \"\" and fails that comparison. `directory` names the subdirectory this package lives in, so the provenance points at the real source. Omitting this is what made the first 0.3.1 publish fail AFTER the tarball had been signed and written to the sigstore transparency log.",