Smettere di arrotondare int64 ids sul modo di tornare al server

Fixkamo-internal
Spegnimento
19 agosto 2026 alle ore 02:02 UTC
Autore
kamo
Impegno
1709c43

Nuotare la metà del cliente del lavoro int64 id. Ognuno di questi ha preso un id il server aveva inviato intatto e messo attraverso Number()/parseInt(), che gira qualcosa oltre 2^53 -- così la richiesta chiamata una fila che non esiste. Molti si sedevano accanto a una chiamata di fratelli che già inviato esattamente lo stesso id, che è ciò che li rende visibili: - binderApi.shareBinder ha inviato Number(memberId) mentre unshareBinder lo invia tutto, quindi un legante potrebbe essere condiviso e quindi non condiviso. - MemberCreateForm ha inviato Number(memberId) per assegnare una casella di posta, quindi utilizzato lo stesso id intatta nel percorso primario-mailbox una chiamata più tardi -- due chiamate, due membri diversi. - I segnalatori di e-sign hanno arrotondato il membro id, l'account uid e il membro del conto id, allegando i firmatari a ids che non esistono. - Gli ordini di commercio hanno parso un compratore di tipo UID con parseInt, quindi incollando un reale 19-digit uid ha creato l'ordine contro un diverso compratore. - PipelineApplicationsTab adattato ipotecaAppsApi la stringa esatta uid con Number(), e L'idiota arrotondata ha guidato il routing e... -- stato scrivere contro la domanda di prestito sbagliato. Il suo dedupe Mappa e selezione Set sono ora chiave da String(uid); i due endpoint rispondono con diversi tipi JS per gli stessi applicazione, quindi una chiave numerica non potrebbe mai corrispondere a una stringa. I tipi si allargano a `string | numero ` piuttosto che `string`: un numero è quello che un servizio che non è stato ricostruito ancora invia, ed è già arrotondato da allora. I due aritmetici gli usi di un uid sono stati demo seeding, non identità, e ora coerce esplicitamente e localmente. scripts/check-int64-zod-ids.mjs unisce npm test e chiude la porta sulla specifica trappola che ha iniziato questo: un sindacato zod prende il ramo di corrispondenza FIRST, quindi z.union([z.coerce.number(), z.string()))) analizza un id esatto direttamente in un doppio mentre leggendo quasi identico all'ordine corretto. Mutazione-testata contro il difetto originale di OrganizationDTOSchema.

Tutte le modifiche

Come quello che vedi la spedizione?

Ognuno di questi aggiornamenti atterra automaticamente nello spazio di lavoro. Inizia gratis e guardalo crescere settimana dopo settimana.

Inizia gratis per sempreVisualizza il prezzo