@tktb-tess/util-fns 0.11.4 → 0.12.1

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
+ (function(){let e=(e,t)=>{t<0n&&(t*=-1n);let n=e%t;return n<0n?n+t:n},t=(t,n,r)=>{if(r<1n)throw RangeError("`mod` must be positive");if(n<0n)throw RangeError("`power` must not be negative");if(t=e(t,r),r===1n)return 0n;if(t%r===1n||t%r===0n)return t;if(t===r-1n)return n&1n?r-1n:1n;let i=1n;for(;n>0n;)n&1n&&(i=i*t%r),t=t*t%r,n>>=1n;return i},n=(e,t)=>{if(t<1n||t%2n==0n)throw RangeError("`n` is out of range");for(;e<0n;)e+=t;e%=t;let n=1n;for(;e!==0n;){for(;e%2n==0n;){e/=2n;let r=t%8n;(r===3n||r===5n)&&(n*=-1n)}[e,t]=[t,e],e%4n==3n&&t%4n==3n&&(n*=-1n),e%=t}return t===1n?n:0n},r=e=>{if(e<0n)return!1;if(e===0n)return!0;let t=1n,n=e;for(;t+1n<n;){let r=(t+n)/2n;r*r<e?t=r:n=r}return e===t**2n||e===(t+1n)**2n},i=()=>typeof window>`u`&&typeof self<`u`&&`importScripts`in self,a=(e,t)=>{if(!i())throw Error(`this function must be used in Worker`);let n={success:!0,value:e,id:t};self.postMessage(n)},o=(e,t)=>{if(!i())throw Error(`this function must be used in Worker`);let n={success:!1,error:e,id:t};self.postMessage(n)},s=e=>{if(e<=1n)return!1;if(e%2n==0n)return e===2n;let n=e-1n,r=0n;for(;n%2n==0n;)n>>=1n,r+=1n;let[i,a]=[n,r],o=t(2n,i,e);if(o===1n)return!0;for(let t=0n;t<a;t++){if(o===e-1n)return!0;o=o*o%e}return!1},c=e=>{let t=5n,i=n(t,e);for(;i>0n;){if(t=t>0n?t+2n:t-2n,t*=-1n,t===-15n&&r(e))return[0n,0n];i=n(t,e)}return[t,i]},l=(t,n)=>(t&1n)==1n?e(t+n>>1n,n):e(t>>1n,n),u=(t,n,r,i)=>{let a=1n,o=r,s=t.toString(2).slice(1);for(let t of s)[a,o]=[e(a*o,n),l(o*o+i*a*a,n)],t===`1`&&([a,o]=[l(r*a+o,n),l(i*a+r*o,n)]);return[a,o]},d=(n,r,i,a)=>{if(n%2n!=1n)throw RangeError("`n` must be odd");let o=n+1n,s=0n;for(;o%2n==0n;)o>>=1n,s+=1n;let[c,l]=u(o,n,i,r),d=l;if(c===0n)return!0;a=t(a,o,n);for(let r=0n;r<s;r++){if(d===0n)return!0;d=e(d*d-2n*a,n),a=t(a,2n,n)}return!1},f=e=>{if(e<=1n)return!1;if(e%2n==0n)return e===2n;for(let t of[2n,3n,5n,7n,11n,13n,17n,19n,23n,29n,31n,37n,41n,43n,47n,53n,59n,61n,67n,71n,73n,79n,83n,89n,97n,101n,103n,107n,109n,113n,127n,131n,137n,139n,149n,151n,157n,163n,167n,173n,179n,181n,191n,193n,197n,199n,211n,223n,227n,229n,233n,239n,241n,251n,257n,263n,269n,271n,277n,281n,283n,293n,307n,311n,313n,317n,331n,337n,347n,349n,353n,359n,367n,373n,379n,383n,389n,397n,401n,409n,419n,421n,431n,433n,439n,443n,449n,457n,461n,463n,467n,479n,487n,491n,499n])if(e%t===0n)return e===t;if(!s(e))return!1;let[t,n]=c(e);return n===0n?!1:d(e,t,1n,(1n-t)/4n)};globalThis.onmessage=e=>{let{value:t,id:n}=e.data;try{a(f(t),n)}catch(e){o(e,n)}}})();
@@ -0,0 +1,33 @@
1
+ declare const __ID_BRAND__: unique symbol;
2
+ type ID = ReturnType<typeof crypto.randomUUID> & {
3
+ readonly [__ID_BRAND__]: unknown;
4
+ };
5
+ export interface WorkerMessage<T> {
6
+ readonly value: T;
7
+ readonly id: ID;
8
+ }
9
+ interface WorkerResultBase {
10
+ readonly id: ID;
11
+ }
12
+ interface WorkerSucceededResult<T> extends WorkerResultBase {
13
+ readonly success: true;
14
+ readonly value: T;
15
+ }
16
+ interface WorkerFailedResult extends WorkerResultBase {
17
+ readonly success: false;
18
+ readonly error: unknown;
19
+ }
20
+ export type WorkerResult<T> = WorkerSucceededResult<T> | WorkerFailedResult;
21
+ export declare class AsyncWorker<TPost = unknown, TRecv = unknown> {
22
+ #private;
23
+ constructor(w: Worker);
24
+ /**
25
+ * sends a message to the worker, and returns promise resolved by message from worker
26
+ * @param message
27
+ * @param options
28
+ */
29
+ readonly postMessage: (message: TPost, options?: StructuredSerializeOptions) => Promise<TRecv>;
30
+ }
31
+ export declare const postSuccess: <TRecv>(value: TRecv, id: ID) => void;
32
+ export declare const postFailed: (error: unknown, id: ID) => void;
33
+ export {};
@@ -18,3 +18,8 @@ export declare const getRandPrimeByRange: (min: bigint, max: bigint) => bigint;
18
18
  * @returns
19
19
  */
20
20
  export declare const getRandPrimeByBitLength: (bitLength: number, fixed?: boolean) => bigint;
21
+ /**
22
+ * worker async version of `bailliePSW()`
23
+ * @param n
24
+ */
25
+ export declare const bailliePSWAsync: (n: bigint) => Promise<boolean>;
@@ -0,0 +1 @@
1
+ export {};