Testing latest pari + WASM + node.js... and it works?! Wow.
1period(D) = 2{ my(u,v,j,r,s); 3 4 if (type(D) != "t_INT" || D < 2, return(-1)); 5 u = sqrtint(D, &v); \\ v = D-u^2; 6 if (!v, return(0)); 7 s = v; 8 r = u; j = 0; 9 until (u == r && v == s, 10 u = (r+u)\v * v - u; 11 v = (D-u^2)\v; j++; 12 ); j; 13} 14 15