proposal-hints-create-context.mjs
sha256:8915fe406161f95c1681f9469375e7bae5b28c884f00bedbdef65e4b0cd0738d
docs(flow): commit FLOW-V0-SPEC.md hygiene for 7A-INT merge
Human
1 day ago
| 1 | /** |
| 2 | * Build { path, body } for hosted review-hints after POST /proposals. |
| 3 | * The canister create response often omits `body`; the client request (bodyOut) still has it. |
| 4 | * Passing non-empty body lets proposal-review-hints-async skip a canister GET (saves ~1–3s+). |
| 5 | */ |
| 6 | |
| 7 | /** |
| 8 | * @param {unknown} j - parsed JSON from canister POST /proposals response |
| 9 | * @param {unknown} bodyOut - outgoing request body object (after augment), same shape sent to canister |
| 10 | * @returns {{ path: string, body: string } | null} |
| 11 | */ |
| 12 | export function proposalDataForHostedReviewHintsFromCreate(j, bodyOut) { |
| 13 | if (!j || typeof j !== 'object' || typeof j.proposal_id !== 'string') return null; |
| 14 | let mergedBody = j.body != null && String(j.body).length > 0 ? String(j.body) : ''; |
| 15 | if (!mergedBody && bodyOut && typeof bodyOut === 'object' && !Buffer.isBuffer(bodyOut)) { |
| 16 | const b = /** @type {Record<string, unknown>} */ (bodyOut).body; |
| 17 | if (b != null) mergedBody = String(b); |
| 18 | } |
| 19 | const pathStr = j.path != null ? String(j.path) : ''; |
| 20 | return { path: pathStr, body: mergedBody }; |
| 21 | } |
File History
1 commit
sha256:8915fe406161f95c1681f9469375e7bae5b28c884f00bedbdef65e4b0cd0738d
docs(flow): commit FLOW-V0-SPEC.md hygiene for 7A-INT merge
Human
1 day ago