relay: a float-spelled timestamp is rejected, which the capture accepts
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 78/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- rust, typescript
Piste de recherche
Lisez crates/nostream-core/src/messages.rs:474-494 et comparez l’analyse de created_at avec la branche kind. Vérifiez dans src/schemas/base-schema.ts:23-27 quel comportement concernant les entiers la capture accepte. Acceptez les horodatages dans la plage avec une partie fractionnaire nulle, tout en gardant les fractions réelles invalides ; confirmez que 1700000000.0 est accepté et qu’un horodatage fractionnaire est rejeté.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
A created_at written in float spelling — 1700000000.0, or any value a JSON encoder emits with a fractional part of zero — is rejected by the port and accepted by the capture.
Port: crates/nostream-core/src/messages.rs:474-486 matches Value::Number and requires as_i64(), which returns None for a float, then errors with Invalid timestamp. kind two fields later already handles this correctly (:491-494), rejecting only a float whose fract() != 0.0.
Capture: src/schemas/base-schema.ts:23-27 — z.number().int().min(0).refine(Number.isSafeInteger …). In JavaScript there is no float/int distinction after parsing: 1700000000.0 is the number 1700000000, Number.isInteger is true, and the value passes.
So the two disagree on an encoding nobody writes by hand but encoders emit routinely. A client that serialises with a floating-point formatter is rejected here and accepted there.
Fix direction: mirror the kind branch — accept a Value::Number whose f64 has a zero fractional part and lies in range. Keep rejecting a genuine fraction.
Measured on rewrite/main at 740ef69: pre-existing, outside #950–#952's diff, and not made more reachable by it.
- Langage dominant
- TypeScript
- Étoiles
- 829
- Forks
- 234
- Merge moyen
- 17 h 6 min
- PR mergées (30 j)
- 92
Préparer son environnement
- Fournit un Dockerfile ou un fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de cameri/nostream
-
factory rewrite rust
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
Les mainteneurs répondent en général sous 1 jour
-
factory rewrite rust
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
cameri/nostream#991 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
test: user-subscription specs fail outside UTC, so the pre-commit hook cannot passPeut-être pris @tejasvasingh2004 l’a pris aujourd’hui. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
cameri/nostream#971 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
bug factory rewrite rust
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
Les mainteneurs répondent en général sous 1 jour
-
bug factory rewrite rust
Difficulté 2/5 1-3 heures Accessibilité débutants 77/100
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de cameri/nostream
Issues similaires
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
awslabs/visual-asset-management-system#804 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
restatedev/sdk-typescript#813 ·
-
bug desktop P1 session XS
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
Merit-Systems/x402scan#1312 ·
-
type:bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
Azure/apiops-cli#331 ·
Les mainteneurs répondent en général sous 3 jours