@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.
- package/dist/assets/bpsw_worker-B1aaSJNb.js +1 -0
- package/dist/async_worker.d.ts +33 -0
- package/dist/baillie_psw.d.ts +5 -0
- package/dist/bpsw_worker.d.ts +1 -0
- package/dist/bundle.js +632 -778
- package/dist/bundle.min.js +2 -2
- package/dist/fraction.d.ts +11 -11
- package/dist/leb128.d.ts +1 -1
- package/dist/main.d.ts +1 -1
- package/dist/named_error.d.ts +2 -2
- package/dist/pcg_minimal.d.ts +2 -2
- package/dist/random.d.ts +5 -0
- package/dist/types.d.ts +0 -0
- package/dist/u8arr_ext.d.ts +2 -2
- package/dist/util.d.ts +16 -0
- package/dist/xoshiro_minimal.d.ts +4 -4
- package/package.json +5 -10
- package/dist/worker_stream.d.ts +0 -7
|
@@ -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 {};
|
package/dist/baillie_psw.d.ts
CHANGED
|
@@ -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 {};
|