foxts 1.6.0 → 2.0.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/cjs/add-array-elements-to-set.js +2 -0
- package/dist/cjs/add-array-elements-to-set.js.map +1 -0
- package/dist/cjs/ahocorasick.js +2 -0
- package/dist/cjs/ahocorasick.js.map +1 -0
- package/dist/cjs/append-set-elements-to-array.js +2 -0
- package/dist/cjs/append-set-elements-to-array.js.map +1 -0
- package/dist/cjs/async-write-to-stream.js +2 -0
- package/dist/cjs/async-write-to-stream.js.map +1 -0
- package/dist/cjs/bitwise.js +2 -0
- package/dist/cjs/bitwise.js.map +1 -0
- package/dist/cjs/create-fixed-array.js +2 -0
- package/dist/cjs/create-fixed-array.js.map +1 -0
- package/dist/cjs/detect-eol.js +2 -0
- package/dist/cjs/detect-eol.js.map +1 -0
- package/dist/cjs/escape-html.js +2 -0
- package/dist/cjs/escape-html.js.map +1 -0
- package/dist/cjs/escape-string-regexp.d.ts +7 -0
- package/dist/cjs/escape-string-regexp.js +2 -0
- package/dist/cjs/escape-string-regexp.js.map +1 -0
- package/dist/cjs/fast-string-array-join.js +2 -0
- package/dist/cjs/fast-string-array-join.js.map +1 -0
- package/dist/cjs/fifo.js +2 -0
- package/dist/cjs/fifo.js.map +1 -0
- package/dist/cjs/fnv1a.js +2 -0
- package/dist/cjs/fnv1a.js.map +1 -0
- package/dist/cjs/fnv1a52.js +2 -0
- package/dist/cjs/fnv1a52.js.map +1 -0
- package/dist/cjs/guard.js +2 -0
- package/dist/cjs/guard.js.map +1 -0
- package/{headers-to-object/index.d.ts → dist/cjs/headers-to-object.d.ts} +1 -1
- package/dist/cjs/headers-to-object.js +2 -0
- package/dist/cjs/headers-to-object.js.map +1 -0
- package/dist/cjs/identity.js +2 -0
- package/dist/cjs/identity.js.map +1 -0
- package/dist/cjs/is-probably-ip.js +2 -0
- package/dist/cjs/is-probably-ip.js.map +1 -0
- package/dist/cjs/merge-headers.js +2 -0
- package/dist/cjs/merge-headers.js.map +1 -0
- package/dist/cjs/noop.js +2 -0
- package/dist/cjs/noop.js.map +1 -0
- package/dist/cjs/once.js +2 -0
- package/dist/cjs/once.js.map +1 -0
- package/{pick-random/index.d.ts → dist/cjs/pick-random.d.ts} +1 -2
- package/dist/cjs/pick-random.js +2 -0
- package/dist/cjs/pick-random.js.map +1 -0
- package/{random-int/index.d.ts → dist/cjs/random-int.d.ts} +1 -2
- package/dist/cjs/random-int.js +2 -0
- package/dist/cjs/random-int.js.map +1 -0
- package/dist/cjs/repool.js +2 -0
- package/dist/cjs/repool.js.map +1 -0
- package/{retrie/index.d.ts → dist/cjs/retrie.d.ts} +2 -2
- package/dist/cjs/retrie.js +2 -0
- package/dist/cjs/retrie.js.map +1 -0
- package/dist/cjs/serialized-memo.js +2 -0
- package/dist/cjs/serialized-memo.js.map +1 -0
- package/dist/cjs/simple-string-hash.js +2 -0
- package/dist/cjs/simple-string-hash.js.map +1 -0
- package/dist/cjs/tagged.js +2 -0
- package/dist/cjs/tagged.js.map +1 -0
- package/dist/cjs/text-line-stream.d.ts +22 -0
- package/dist/cjs/text-line-stream.js +2 -0
- package/dist/cjs/text-line-stream.js.map +1 -0
- package/dist/cjs/wait.js +2 -0
- package/dist/cjs/wait.js.map +1 -0
- package/dist/es/add-array-elements-to-set.d.mts +3 -0
- package/dist/es/add-array-elements-to-set.mjs +2 -0
- package/dist/es/add-array-elements-to-set.mjs.map +1 -0
- package/dist/es/ahocorasick.d.mts +3 -0
- package/dist/es/ahocorasick.mjs +2 -0
- package/dist/es/ahocorasick.mjs.map +1 -0
- package/dist/es/append-set-elements-to-array.d.mts +3 -0
- package/dist/es/append-set-elements-to-array.mjs +2 -0
- package/dist/es/append-set-elements-to-array.mjs.map +1 -0
- package/dist/es/async-write-to-stream.d.mts +18 -0
- package/dist/es/async-write-to-stream.mjs +2 -0
- package/dist/es/async-write-to-stream.mjs.map +1 -0
- package/dist/es/bitwise.d.mts +30 -0
- package/dist/es/bitwise.mjs +2 -0
- package/dist/es/bitwise.mjs.map +1 -0
- package/dist/es/create-fixed-array.d.mts +6 -0
- package/dist/es/create-fixed-array.mjs +2 -0
- package/dist/es/create-fixed-array.mjs.map +1 -0
- package/dist/es/detect-eol.d.mts +3 -0
- package/dist/es/detect-eol.mjs +2 -0
- package/dist/es/detect-eol.mjs.map +1 -0
- package/dist/es/escape-html.d.mts +3 -0
- package/dist/es/escape-html.mjs +2 -0
- package/dist/es/escape-html.mjs.map +1 -0
- package/dist/es/escape-string-regexp.d.mts +7 -0
- package/dist/es/escape-string-regexp.mjs +2 -0
- package/dist/es/escape-string-regexp.mjs.map +1 -0
- package/dist/es/fast-string-array-join.d.mts +6 -0
- package/dist/es/fast-string-array-join.mjs +2 -0
- package/dist/es/fast-string-array-join.mjs.map +1 -0
- package/dist/es/fifo.d.mts +18 -0
- package/dist/es/fifo.mjs +2 -0
- package/dist/es/fifo.mjs.map +1 -0
- package/dist/es/fnv1a.d.mts +3 -0
- package/{fnv1a/index.mjs → dist/es/fnv1a.mjs} +2 -1
- package/dist/es/fnv1a.mjs.map +1 -0
- package/dist/es/fnv1a52.d.mts +12 -0
- package/dist/es/fnv1a52.mjs +2 -0
- package/dist/es/fnv1a52.mjs.map +1 -0
- package/dist/es/guard.d.mts +20 -0
- package/dist/es/guard.mjs +2 -0
- package/dist/es/guard.mjs.map +1 -0
- package/dist/es/headers-to-object.d.mts +5 -0
- package/dist/es/headers-to-object.mjs +2 -0
- package/dist/es/headers-to-object.mjs.map +1 -0
- package/dist/es/identity.d.mts +3 -0
- package/dist/es/identity.mjs +2 -0
- package/dist/es/identity.mjs.map +1 -0
- package/dist/es/is-probably-ip.d.mts +8 -0
- package/dist/es/is-probably-ip.mjs +2 -0
- package/dist/es/is-probably-ip.mjs.map +1 -0
- package/dist/es/merge-headers.d.mts +8 -0
- package/dist/es/merge-headers.mjs +2 -0
- package/dist/es/merge-headers.mjs.map +1 -0
- package/dist/es/noop.d.mts +11 -0
- package/dist/es/noop.mjs +2 -0
- package/dist/es/noop.mjs.map +1 -0
- package/dist/es/once.d.mts +3 -0
- package/{once/index.mjs → dist/es/once.mjs} +2 -1
- package/dist/es/once.mjs.map +1 -0
- package/dist/es/pick-random.d.mts +9 -0
- package/dist/es/pick-random.mjs +2 -0
- package/dist/es/pick-random.mjs.map +1 -0
- package/dist/es/random-int.d.mts +7 -0
- package/dist/es/random-int.mjs +2 -0
- package/dist/es/random-int.mjs.map +1 -0
- package/dist/es/repool.d.mts +18 -0
- package/dist/es/repool.mjs +2 -0
- package/dist/es/repool.mjs.map +1 -0
- package/dist/es/retrie.d.mts +17 -0
- package/dist/es/retrie.mjs +2 -0
- package/dist/es/retrie.mjs.map +1 -0
- package/dist/es/serialized-memo.d.mts +55 -0
- package/dist/es/serialized-memo.mjs +2 -0
- package/dist/es/serialized-memo.mjs.map +1 -0
- package/dist/es/simple-string-hash.d.mts +3 -0
- package/dist/es/simple-string-hash.mjs +2 -0
- package/dist/es/simple-string-hash.mjs.map +1 -0
- package/dist/es/tagged.d.mts +6 -0
- package/{tagged/index.mjs → dist/es/tagged.mjs} +2 -1
- package/dist/es/tagged.mjs.map +1 -0
- package/dist/es/text-line-stream.d.mts +22 -0
- package/dist/es/text-line-stream.mjs +2 -0
- package/dist/es/text-line-stream.mjs.map +1 -0
- package/dist/es/wait.d.mts +4 -0
- package/dist/es/wait.mjs +2 -0
- package/dist/es/wait.mjs.map +1 -0
- package/package.json +257 -182
- package/add-array-elements-to-set/index.cjs +0 -1
- package/add-array-elements-to-set/index.mjs +0 -1
- package/ahocorasick/index.cjs +0 -1
- package/ahocorasick/index.mjs +0 -1
- package/append-set-elements-to-array/index.cjs +0 -1
- package/append-set-elements-to-array/index.mjs +0 -1
- package/async-write-to-stream/index.cjs +0 -1
- package/async-write-to-stream/index.mjs +0 -1
- package/bitwise/index.cjs +0 -1
- package/bitwise/index.mjs +0 -1
- package/create-fixed-array/index.cjs +0 -1
- package/create-fixed-array/index.mjs +0 -1
- package/detect-eol/index.cjs +0 -1
- package/detect-eol/index.mjs +0 -1
- package/escape-html/index.cjs +0 -1
- package/escape-html/index.mjs +0 -1
- package/escape-string-regexp/index.cjs +0 -1
- package/escape-string-regexp/index.d.ts +0 -3
- package/escape-string-regexp/index.mjs +0 -1
- package/fast-string-array-join/index.cjs +0 -1
- package/fast-string-array-join/index.mjs +0 -1
- package/fifo/index.cjs +0 -1
- package/fifo/index.mjs +0 -1
- package/fnv1a/index.cjs +0 -1
- package/fnv1a52/index.cjs +0 -1
- package/fnv1a52/index.mjs +0 -1
- package/guard/index.cjs +0 -1
- package/guard/index.mjs +0 -1
- package/headers-to-object/index.cjs +0 -1
- package/headers-to-object/index.mjs +0 -1
- package/identity/index.cjs +0 -1
- package/identity/index.mjs +0 -1
- package/is-probably-ip/index.cjs +0 -1
- package/is-probably-ip/index.mjs +0 -1
- package/merge-headers/index.cjs +0 -1
- package/merge-headers/index.mjs +0 -1
- package/noop/index.cjs +0 -1
- package/noop/index.mjs +0 -1
- package/once/index.cjs +0 -1
- package/pick-random/index.cjs +0 -1
- package/pick-random/index.mjs +0 -1
- package/random-int/index.cjs +0 -1
- package/random-int/index.mjs +0 -1
- package/repool/index.cjs +0 -1
- package/repool/index.mjs +0 -1
- package/retrie/index.cjs +0 -1
- package/retrie/index.mjs +0 -1
- package/serialized-memo/index.cjs +0 -5
- package/serialized-memo/index.mjs +0 -5
- package/simple-string-hash/index.cjs +0 -1
- package/simple-string-hash/index.mjs +0 -1
- package/tagged/index.cjs +0 -1
- package/ts_version_4.8_and_above_is_required.d.ts +0 -0
- package/wait/index.cjs +0 -1
- package/wait/index.mjs +0 -1
- /package/{add-array-elements-to-set/index.d.ts → dist/cjs/add-array-elements-to-set.d.ts} +0 -0
- /package/{ahocorasick/index.d.ts → dist/cjs/ahocorasick.d.ts} +0 -0
- /package/{append-set-elements-to-array/index.d.ts → dist/cjs/append-set-elements-to-array.d.ts} +0 -0
- /package/{async-write-to-stream/index.d.ts → dist/cjs/async-write-to-stream.d.ts} +0 -0
- /package/{bitwise/index.d.ts → dist/cjs/bitwise.d.ts} +0 -0
- /package/{create-fixed-array/index.d.ts → dist/cjs/create-fixed-array.d.ts} +0 -0
- /package/{detect-eol/index.d.ts → dist/cjs/detect-eol.d.ts} +0 -0
- /package/{escape-html/index.d.ts → dist/cjs/escape-html.d.ts} +0 -0
- /package/{fast-string-array-join/index.d.ts → dist/cjs/fast-string-array-join.d.ts} +0 -0
- /package/{fifo/index.d.ts → dist/cjs/fifo.d.ts} +0 -0
- /package/{fnv1a/index.d.ts → dist/cjs/fnv1a.d.ts} +0 -0
- /package/{fnv1a52/index.d.ts → dist/cjs/fnv1a52.d.ts} +0 -0
- /package/{guard/index.d.ts → dist/cjs/guard.d.ts} +0 -0
- /package/{identity/index.d.ts → dist/cjs/identity.d.ts} +0 -0
- /package/{is-probably-ip/index.d.ts → dist/cjs/is-probably-ip.d.ts} +0 -0
- /package/{merge-headers/index.d.ts → dist/cjs/merge-headers.d.ts} +0 -0
- /package/{noop/index.d.ts → dist/cjs/noop.d.ts} +0 -0
- /package/{once/index.d.ts → dist/cjs/once.d.ts} +0 -0
- /package/{repool/index.d.ts → dist/cjs/repool.d.ts} +0 -0
- /package/{serialized-memo/index.d.ts → dist/cjs/serialized-memo.d.ts} +0 -0
- /package/{simple-string-hash/index.d.ts → dist/cjs/simple-string-hash.d.ts} +0 -0
- /package/{tagged/index.d.ts → dist/cjs/tagged.d.ts} +0 -0
- /package/{wait/index.d.ts → dist/cjs/wait.d.ts} +0 -0
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
interface Reusifiable {
|
|
2
|
+
next: this | null;
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Repool is a class that allows you to reuse objects.
|
|
6
|
+
*
|
|
7
|
+
* Do not use this to store class instances, please use https://github.com/mcollina/reusify instead.
|
|
8
|
+
*/
|
|
9
|
+
declare class Repool<T extends Reusifiable> {
|
|
10
|
+
private createObject;
|
|
11
|
+
private head;
|
|
12
|
+
private tail;
|
|
13
|
+
constructor(createObject: () => T);
|
|
14
|
+
get(): T;
|
|
15
|
+
release(obj: T): void;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { Repool, type Reusifiable };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
class t{constructor(t){this.createObject=t;let e=t();this.tail=e,this.head=e}get(){let t=this.head;if(t.next)this.head=t.next;else{let t=this.createObject();this.tail=t,this.head=t}return t.next=null,t}release(t){this.tail.next=t,this.tail=t}}export{t as Repool};
|
|
2
|
+
//# sourceMappingURL=repool.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repool.mjs","sources":["../../src/repool/index.ts"],"sourcesContent":["export interface Reusifiable {\n next: this | null\n}\n\n/**\n * Repool is a class that allows you to reuse objects.\n *\n * Do not use this to store class instances, please use https://github.com/mcollina/reusify instead.\n */\nexport class Repool<T extends Reusifiable> {\n private head: T;\n private tail: T;\n\n constructor(private createObject: () => T) {\n const obj = createObject();\n this.tail = obj;\n this.head = obj;\n }\n\n public get(): T {\n const current = this.head;\n\n if (current.next) {\n this.head = current.next;\n } else {\n const obj = this.createObject();\n this.tail = obj;\n this.head = obj;\n }\n\n current.next = null;\n\n return current;\n }\n\n public release(obj: T): void {\n this.tail.next = obj;\n this.tail = obj;\n }\n}\n"],"names":["Repool","constructor","createObject","obj","tail","head","get","current","next","release"],"mappings":"AASO,MAAMA,EAIXC,YAAoBC,CAAqB,CAAE,MAAvBA,YAAAA,CAAAA,EAClB,IAAMC,EAAMD,GACZ,CAAA,IAAI,CAACE,IAAI,CAAGD,EACZ,IAAI,CAACE,IAAI,CAAGF,CACd,CAEOG,KAAS,CACd,IAAMC,EAAU,IAAI,CAACF,IAAI,CAEzB,GAAIE,EAAQC,IAAI,CACd,IAAI,CAACH,IAAI,CAAGE,EAAQC,IAAI,KACnB,CACL,IAAML,EAAM,IAAI,CAACD,YAAY,EAC7B,CAAA,IAAI,CAACE,IAAI,CAAGD,EACZ,IAAI,CAACE,IAAI,CAAGF,CACd,CAIA,OAFAI,EAAQC,IAAI,CAAG,KAERD,CACT,CAEOE,QAAQN,CAAM,CAAQ,CAC3B,IAAI,CAACC,IAAI,CAACI,IAAI,CAAGL,EACjB,IAAI,CAACC,IAAI,CAAGD,CACd,CACF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import * as ___noop from './noop.mjs';
|
|
2
|
+
|
|
3
|
+
interface BaseTrie {
|
|
4
|
+
[key: string]: Trie;
|
|
5
|
+
}
|
|
6
|
+
type Trie = BaseTrie | {
|
|
7
|
+
'': '';
|
|
8
|
+
};
|
|
9
|
+
declare function retrie(keywords: ArrayLike<string>, asPrefixes?: boolean): {
|
|
10
|
+
tree: BaseTrie;
|
|
11
|
+
add: (keywords: string, asPrefixes: boolean) => void;
|
|
12
|
+
toString: () => string;
|
|
13
|
+
toRe: () => RegExp;
|
|
14
|
+
};
|
|
15
|
+
declare function createRetrieKeywordFilter(keywords: ArrayLike<string>, asPrefixes?: boolean): ___noop.Noop<false> | ((string: string) => boolean);
|
|
16
|
+
|
|
17
|
+
export { createRetrieKeywordFilter, retrie };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{falseFn as e}from"./noop.mjs";let t=new Set([".","?","*","+","^","$","|","(",")","{","}","[","]","\\"]);function n(e,r=!1){let l={},o=(e,t)=>{let n;let r=l;for(let l=0,o=e.length;l<o;++l)(n=e.charAt(l))in r||(r[n]=t?{"":""}:{}),r=r[n];r[""]=""};for(let t=0,n=e.length;t<n;++t)o(e[t],r);let i=()=>(function e(n){let r,l,o=!1,i=!1,u=[],f=[];for(let r in n){if(!r){o=!0;continue}((l=e(n[r]))?u:f).push(("-"===r?"\\x2d":t.has(r)?"\\"+r:r)+l)}return o&&null==l?"":(i=!u.length,f.length&&u.push(f[1]?"["+f.join("")+"]":f[0]),r=u[1]?"(?:"+u.join("|")+")":u[0],o&&(r=i?r+"?":"(?:"+r+")?"),r||"")})(l);return{tree:l,add:o,toString:i,toRe:()=>new RegExp((r?"^":"")+i())}}function r(t,l=!1){if(0===t.length)return e;let o=n(t,l).toRe();return o.test.bind(o)}export{r as createRetrieKeywordFilter,n as retrie};
|
|
2
|
+
//# sourceMappingURL=retrie.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"retrie.mjs","sources":["../../src/retrie/index.ts"],"sourcesContent":["// TypeScript port of [retrie](https://github.com/satyr/retrie), which is a Coco -> JS port of [@dankogai](https://x.com/dankogai)'s [RegexpTrie](https://metacpan.org/release/DANKOGAI/Regexp-Trie-0.02/view/lib/Regexp/Trie.pm).\n\nimport { falseFn } from '../noop';\n\ninterface BaseTrie {\n [key: string]: Trie\n}\n\ntype Trie = BaseTrie | {\n '': ''\n};\n\nconst shouldEscapeChars = new Set<string>([\n '.',\n '?',\n '*',\n '+',\n '^',\n '$',\n '|',\n '(',\n ')',\n '{',\n '}',\n '[',\n ']',\n '\\\\'\n]);\n\nexport function retrie(keywords: ArrayLike<string>, asPrefixes = false) {\n const tree: Trie = {};\n\n const add = (keywords: string, asPrefixes: boolean) => {\n let keyword: string;\n let ref: Trie = tree;\n\n for (let i = 0, len = keywords.length; i < len; ++i) {\n keyword = keywords.charAt(i);\n\n if (!(keyword in ref)) {\n (ref as BaseTrie)[keyword] = asPrefixes\n ? { '': '' }\n : {};\n }\n\n ref = (ref as BaseTrie)[keyword];\n }\n\n ref[''] = '';\n };\n\n for (let i = 0, len = keywords.length; i < len; ++i) {\n add(keywords[i], asPrefixes);\n }\n\n const toString = () => {\n function recur(it: Trie): string {\n let q = false;\n let re;\n let sub: string | undefined;\n let cconly = false;\n const alt: string[] = [];\n const cc: string[] = [];\n\n // eslint-disable-next-line guard-for-in -- plain object\n for (const chr in it) {\n if (!chr) {\n q = true;\n continue;\n }\n\n sub = recur((it as BaseTrie)[chr]);\n\n (sub ? alt : cc).push(\n (\n chr === '-'\n // eslint-disable-next-line sukka/unicorn/prefer-string-raw -- regexp escape\n ? '\\\\x2d'\n : (\n shouldEscapeChars.has(chr)\n ? '\\\\' + chr\n : chr\n )\n )\n + sub\n );\n }\n\n if (q && sub == null) {\n return '';\n }\n\n cconly = !alt.length;\n\n if (cc.length) {\n alt.push(\n cc[1]\n ? '[' + cc.join('') + ']'\n : cc[0]\n );\n }\n\n re = alt[1]\n ? '(?:' + alt.join('|') + ')'\n : alt[0];\n\n if (q) {\n re = cconly\n ? re + '?'\n : '(?:' + re + ')?';\n }\n\n return re || '';\n }\n return recur(tree);\n };\n\n const toRe = () => new RegExp(\n (asPrefixes ? '^' : '')\n + toString()\n );\n\n return {\n tree,\n add,\n toString,\n toRe\n };\n}\n\nexport function createRetrieKeywordFilter(keywords: ArrayLike<string>, asPrefixes = false) {\n if (keywords.length === 0) {\n return falseFn;\n }\n\n const re = retrie(keywords, asPrefixes).toRe();\n return re.test.bind(re);\n}\n"],"names":["shouldEscapeChars","Set","retrie","keywords","asPrefixes","tree","add","keyword","ref","i","len","length","charAt","toString","recur","it","re","sub","q","cconly","alt","cc","chr","push","has","join","toRe","RegExp","createRetrieKeywordFilter","falseFn","test","bind"],"mappings":"qCAYA,IAAMA,EAAoB,IAAIC,IAAY,CACxC,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KACD,EAEM,SAASC,EAAOC,CAA2B,CAAEC,EAAa,CAAA,CAAK,EACpE,IAAMC,EAAa,CAAC,EAEdC,EAAM,CAACH,EAAkBC,SACzBG,EACJ,IAAIC,EAAYH,EAEhB,IAAK,IAAII,EAAI,EAAGC,EAAMP,EAASQ,MAAM,CAAEF,EAAIC,EAAK,EAAED,EAChDF,CAAAA,EAAUJ,EAASS,MAAM,CAACH,EAAAA,IAETD,GACdA,CAAAA,CAAgB,CAACD,EAAQ,CAAGH,EACzB,CAAE,GAAI,EAAG,EACT,CAAC,CAAA,EAGPI,EAAOA,CAAgB,CAACD,EAAQ,AAGlCC,CAAAA,CAAG,CAAC,GAAG,CAAG,EACZ,EAEA,IAAK,IAAIC,EAAI,EAAGC,EAAMP,EAASQ,MAAM,CAAEF,EAAIC,EAAK,EAAED,EAChDH,EAAIH,CAAQ,CAACM,EAAE,CAAEL,GAGnB,IAAMS,EAAW,IA2DRC,AA1DP,CAAA,SAASA,EAAMC,CAAQ,EACrB,IACIC,EACAC,EAFAC,EAAI,CAAA,EAGJC,EAAS,CAAA,EACPC,EAAgB,EAAE,CAClBC,EAAe,EAAE,CAGvB,IAAK,IAAMC,KAAOP,EAAI,CACpB,GAAI,CAACO,EAAK,CACRJ,EAAI,CAAA,EACJ,QACF,CAICD,AAAAA,CAAAA,AAFDA,CAAAA,EAAMH,EAAOC,CAAe,CAACO,EAAI,CAAA,EAE1BF,EAAMC,CAAAA,EAAIE,IAAI,CACnB,AACED,CAAAA,AAAQ,MAARA,EAEI,QAEAtB,EAAkBwB,GAAG,CAACF,GAClB,KAAOA,EACPA,CACN,EAEFL,EAEN,QAEA,AAAIC,GAAKD,AAAO,MAAPA,EACA,IAGTE,EAAS,CAACC,EAAIT,MAAM,CAEhBU,EAAGV,MAAM,EACXS,EAAIG,IAAI,CACNF,CAAE,CAAC,EAAE,CACD,IAAMA,EAAGI,IAAI,CAAC,IAAM,IACpBJ,CAAE,CAAC,EAAE,EAIbL,EAAKI,CAAG,CAAC,EAAE,CACP,MAAQA,EAAIK,IAAI,CAAC,KAAO,IACxBL,CAAG,CAAC,EAAE,CAENF,GACFF,CAAAA,EAAKG,EACDH,EAAK,IACL,MAAQA,EAAK,IAAA,EAGZA,GAAM,GACf,CAAA,EACaX,GAQf,MAAO,CACLA,KAAAA,EACAC,IAAAA,EACAO,SAAAA,EACAa,KATW,IAAM,IAAIC,OACrB,AAACvB,CAAAA,EAAa,IAAM,EAAA,EAClBS,IAQJ,CACF,CAEO,SAASe,EAA0BzB,CAA2B,CAAEC,EAAa,CAAA,CAAK,EACvF,GAAID,AAAoB,IAApBA,EAASQ,MAAM,CACjB,OAAOkB,EAGT,IAAMb,EAAKd,EAAOC,EAAUC,GAAYsB,IAAI,GAC5C,OAAOV,EAAGc,IAAI,CAACC,IAAI,CAACf,EACtB"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
interface MemoizeStorageProvider {
|
|
2
|
+
has(key: string): boolean | Promise<boolean>;
|
|
3
|
+
get(key: string): string | undefined | PromiseLike<string | undefined>;
|
|
4
|
+
set(key: string, value: string, ttl: number): void | Promise<void>;
|
|
5
|
+
updateTtl?: (key: string, ttl: number) => void | Promise<void>;
|
|
6
|
+
delete(key: string): void | Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
interface CreateMemoizeOptions {
|
|
9
|
+
/**
|
|
10
|
+
* When set to true, the memoize will always try run the function first.
|
|
11
|
+
* If promise resolved, it will update the cache.
|
|
12
|
+
* If promise rejected, it will try to get the value from cache, and return
|
|
13
|
+
* the cached value. If the cache is not available, it will throw the error.
|
|
14
|
+
*/
|
|
15
|
+
onlyUseCachedIfFail?: boolean;
|
|
16
|
+
resetTtlOnHit?: boolean;
|
|
17
|
+
defaultTtl?: number;
|
|
18
|
+
onCacheUpdate?: (key: string, { humanReadableName }: {
|
|
19
|
+
humanReadableName: string;
|
|
20
|
+
isUseCachedIfFail: boolean;
|
|
21
|
+
}) => void;
|
|
22
|
+
onCacheMiss?: (key: string, { humanReadableName }: {
|
|
23
|
+
humanReadableName: string;
|
|
24
|
+
isUseCachedIfFail: boolean;
|
|
25
|
+
}) => void;
|
|
26
|
+
onCacheHit?: (key: string, { humanReadableName }: {
|
|
27
|
+
humanReadableName: string;
|
|
28
|
+
isUseCachedIfFail: boolean;
|
|
29
|
+
}) => void;
|
|
30
|
+
}
|
|
31
|
+
type SerializableValue = number | string | boolean | bigint | Date | RegExp | Set<SerializableValue> | SerializableValue[] | null | undefined | Map<SerializableValue, SerializableValue> | SerializableObject | /** TypedArray */ Int8Array | Uint8Array | Uint8ClampedArray | Int16Array | Uint16Array | Int32Array | Uint32Array | Float32Array | Float64Array | BigInt64Array | BigUint64Array | ArrayBuffer;
|
|
32
|
+
interface SerializableObject {
|
|
33
|
+
[key: string]: SerializableValue;
|
|
34
|
+
}
|
|
35
|
+
interface MemoizeBaseOptions {
|
|
36
|
+
/**
|
|
37
|
+
* The time to live of the cache in milliseconds.
|
|
38
|
+
*/
|
|
39
|
+
ttl?: number | null;
|
|
40
|
+
temporaryBypass?: boolean;
|
|
41
|
+
}
|
|
42
|
+
interface MemoizeOptionsWithCustomSerializer<T> extends MemoizeBaseOptions {
|
|
43
|
+
serializer: (value: T) => string;
|
|
44
|
+
deserializer: (cached: string) => T;
|
|
45
|
+
}
|
|
46
|
+
type MemoizeOptions<T> = T extends string ? MemoizeBaseOptions : MemoizeOptionsWithCustomSerializer<T>;
|
|
47
|
+
/**
|
|
48
|
+
* A factory function that returns a memoize function.
|
|
49
|
+
*
|
|
50
|
+
* Unlike common memoize function out there, this serialize the parameters and returned value
|
|
51
|
+
* for easy storing with file system, SQLite, Redis, etc.
|
|
52
|
+
*/
|
|
53
|
+
declare function createMemoize(storage: MemoizeStorageProvider, { onlyUseCachedIfFail, resetTtlOnHit, defaultTtl, onCacheUpdate, onCacheMiss, onCacheHit }?: CreateMemoizeOptions): <Args extends SerializableValue[], R>(fn: (...args: Args) => R | Promise<R>, opt?: MemoizeOptions<R>) => (...args: Args) => Promise<R>;
|
|
54
|
+
|
|
55
|
+
export { type CreateMemoizeOptions, type MemoizeOptions, type MemoizeStorageProvider, type SerializableValue, createMemoize };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{fastStringArrayJoin as e}from"./fast-string-array-join.mjs";import{identity as t}from"./identity.mjs";import{noop as A}from"./noop.mjs";function r(e,t,A,r){return new(A||(A=Promise))(function(t,n){function i(e){try{o(r.next(e))}catch(e){n(e)}}function a(e){try{o(r.throw(e))}catch(e){n(e)}}function o(e){var r;e.done?t(e.value):((r=e.value)instanceof A?r:new A(function(e){e(r)})).then(i,a)}o((r=r.apply(e,[])).next())})}class n{constructor(){this.mutex=Promise.resolve()}lock(){let e=()=>{};return this.mutex=this.mutex.then(()=>new Promise(e)),new Promise(t=>{e=t})}dispatch(e){return r(this,void 0,void 0,function*(){let t=yield this.lock();try{return yield Promise.resolve(e())}finally{t()}})}}let i="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:"undefined"!=typeof window?window:global,a=null!==(g=i.Buffer)&&void 0!==g?g:null,o=i.TextEncoder?new i.TextEncoder:null;function l(e,t){return(15&e)+(e>>6|e>>3&8)<<4|(15&t)+(t>>6|t>>3&8)}function f(e,t,A){let r=0;for(let n=0;n<A;n++){let A=t[n]>>>4;e[r++]=A>9?A+87:A+48,A=15&t[n],e[r++]=A>9?A+87:A+48}return String.fromCharCode.apply(null,e)}let s=null!==a?e=>{if("string"==typeof e){let t=a.from(e,"utf8");return new Uint8Array(t.buffer,t.byteOffset,t.length)}if(a.isBuffer(e))return new Uint8Array(e.buffer,e.byteOffset,e.length);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw Error("Invalid data type!")}:e=>{if("string"==typeof e)return o.encode(e);if(ArrayBuffer.isView(e))return new Uint8Array(e.buffer,e.byteOffset,e.byteLength);throw Error("Invalid data type!")},u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Q=new Uint8Array(256);for(let e=0;e<u.length;e++)Q[u.charCodeAt(e)]=e;let h=new n,C=new Map;new n,new n,new n,new n,new n,new n,new n,new n,new n,new n,new n,new n,new n,new n,new n,new n;var g,I={name:"xxhash64",data:"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",hash:"177fbfa3"};let c=new n,B=null,w=new Uint8Array(8);function y(e){return!Number.isInteger(e)||e<0||e>0xffffffff?Error("Seed must be given as two valid 32-bit long unsigned integers (lo + high)."):null}function E(e,t,A){let r=new DataView(e);r.setUint32(0,t,!0),r.setUint32(4,A,!0)}function b(e,t=0,A=0){if(y(t))return Promise.reject(y(t));if(y(A))return Promise.reject(y(A));if(null===B)return(function(e,t,A){return r(this,void 0,void 0,function*(){let A=yield e.lock(),n=yield function(e,t){return r(this,void 0,void 0,function*(){let A=null,n=null,i=!1;if("undefined"==typeof WebAssembly)throw Error("WebAssembly is not supported in this environment!");let a=()=>new DataView(A.exports.memory.buffer).getUint32(A.exports.STATE_SIZE,!0),o=h.dispatch(()=>r(this,void 0,void 0,function*(){if(!C.has(e.name)){let t=function(e){let t=function(e){let t=Math.floor(.75*e.length),A=e.length;return"="===e[A-1]&&(t-=1,"="===e[A-2]&&(t-=1)),t}(e),A=e.length,r=new Uint8Array(t),n=0;for(let t=0;t<A;t+=4){let A=Q[e.charCodeAt(t)],i=Q[e.charCodeAt(t+1)],a=Q[e.charCodeAt(t+2)],o=Q[e.charCodeAt(t+3)];r[n]=A<<2|i>>4,r[n+=1]=(15&i)<<4|a>>2,r[n+=1]=(3&a)<<6|63&o,n+=1}return r}(e.data),A=WebAssembly.compile(t);C.set(e.name,A)}let t=yield C.get(e.name);A=yield WebAssembly.instantiate(t,{})})),u=(e=null)=>{i=!0,A.exports.Hash_Init(e)},g=e=>{let t=0;for(;t<e.length;){let r=e.subarray(t,t+16384);t+=r.length,n.set(r),A.exports.Hash_Update(r.length)}},I=e=>{if(!i)throw Error("update() called before init()");g(s(e))},c=new Uint8Array(16),B=(e,r=null)=>{if(!i)throw Error("digest() called before init()");return(i=!1,A.exports.Hash_Final(r),"binary"===e)?n.slice(0,t):f(c,n,t)},w=e=>"string"==typeof e?e.length<4096:e.byteLength<16384,y=w;switch(e.name){case"argon2":case"scrypt":y=()=>!0;break;case"blake2b":case"blake2s":y=(e,t)=>t<=512&&w(e);break;case"blake3":y=(e,t)=>0===t&&w(e);break;case"xxhash64":case"xxhash3":case"xxhash128":case"crc64":y=()=>!1}return yield r(this,void 0,void 0,function*(){A||(yield o);let e=A.exports.Hash_GetBuffer();n=new Uint8Array(A.exports.memory.buffer,e,16384)}),{getMemory:()=>n,writeMemory:(e,t=0)=>{n.set(e,t)},getExports:()=>A.exports,setMemorySize:e=>{A.exports.Hash_SetMemorySize(e);let t=A.exports.Hash_GetBuffer();n=new Uint8Array(A.exports.memory.buffer,t,e)},init:u,update:I,digest:B,save:()=>{if(!i)throw Error("save() can only be called after init() and before digest()");let t=A.exports.Hash_GetState(),r=a(),n=new Uint8Array(A.exports.memory.buffer,t,r),o=new Uint8Array(4+r);return function(e,t){let A=t.length>>1;for(let r=0;r<A;r++){let A=r<<1;e[r]=l(t.charCodeAt(A),t.charCodeAt(A+1))}}(o,e.hash),o.set(n,4),o},load:t=>{if(!(t instanceof Uint8Array))throw Error("load() expects an Uint8Array generated by save()");let r=A.exports.Hash_GetState(),n=a(),o=4+n,f=A.exports.memory.buffer;if(t.length!==o)throw Error(`Bad state length (expected ${o} bytes, got ${t.length})`);if(!function(e,t){if(e.length!==2*t.length)return!1;for(let A=0;A<t.length;A++){let r=A<<1;if(t[A]!==l(e.charCodeAt(r),e.charCodeAt(r+1)))return!1}return!0}(e.hash,t.subarray(0,4)))throw Error("This state was written by an incompatible hash implementation");let s=t.subarray(4);new Uint8Array(f,r,n).set(s),i=!0},calculate:(e,r=null,i=null)=>{if(!y(e,r))return u(r),I(e),B("hex",i);let a=s(e);return n.set(a),A.exports.Hash_Calculate(a.length,r,i),f(c,n,t)},hashLength:t}})}(t,8);return A(),n})})(c,I,0).then(r=>(B=r,E(w.buffer,t,A),B.writeMemory(w),B.calculate(e)));try{E(w.buffer,t,A),B.writeMemory(w);let r=B.calculate(e);return Promise.resolve(r)}catch(e){return Promise.reject(e)}}new n,new n,new n,new n,new n;class d extends Error{constructor(e,t){super(e),this.name="DevalueError",this.path=t.join("")}}function p(e){return Object(e)!==e}let m=Object.getOwnPropertyNames(Object.prototype).sort().join("\0");function k(e){let t="",A=0,r=e.length;for(let n=0;n<r;n+=1){let r=function(e){switch(e){case'"':return'\\"';case"<":return"\\u003C";case"\\":return"\\\\";case"\n":return"\\n";case"\r":return"\\r";case" ":return"\\t";case"\b":return"\\b";case"\f":return"\\f";case"\u2028":return"\\u2028";case"\u2029":return"\\u2029";default:return e<" "?`\\u${e.charCodeAt(0).toString(16).padStart(4,"0")}`:""}}(e[n]);r&&(t+=e.slice(A,n)+r,A=n+1)}return`"${0===A?e:t+e.slice(A)}"`}let v=/^[a-zA-Z_$][a-zA-Z_$0-9]*$/;function U(e){return v.test(e)?"."+e:"["+JSON.stringify(e)+"]"}function F(e){let t=new DataView(e),A="";for(let r=0;r<e.byteLength;r++)A+=String.fromCharCode(t.getUint8(r));return function(e){let t="";for(let A=0;A<e.length;A+=3){let r=[void 0,void 0,void 0,void 0];r[0]=e.charCodeAt(A)>>2,r[1]=(3&e.charCodeAt(A))<<4,e.length>A+1&&(r[1]|=e.charCodeAt(A+1)>>4,r[2]=(15&e.charCodeAt(A+1))<<2),e.length>A+2&&(r[2]|=e.charCodeAt(A+2)>>6,r[3]=63&e.charCodeAt(A+2));for(let e=0;e<r.length;e++)void 0===r[e]?t+="=":t+="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"[r[e]]}return t}(A)}function J(e){let t=typeof e;return"string"===t?k(e):e instanceof String?k(e.toString()):void 0===e?"-1":0===e&&1/e<0?"-6":"bigint"===t?`["BigInt","${e}"]`:String(e)}function x(r,{onlyUseCachedIfFail:n=!1,resetTtlOnHit:i=!1,defaultTtl:a=6048e5,onCacheUpdate:o=A,onCacheMiss:l=A,onCacheHit:f=A}={}){return function(A,s){if(s?.temporaryBypass)return(...e)=>Promise.resolve(A(...e));let u=s&&"serializer"in s?s.serializer:t,Q=s&&"deserializer"in s?s.deserializer:t,h=s?.ttl??a,C=A.toString(),g=b(C);return async function(...t){let a=e(await Promise.all([g,b(function(e,t){let A=[],r=new Map,n=[],i=[],a=0,o=function e(t){if("function"==typeof t)throw new d("Cannot stringify a function",i);if(r.has(t))return r.get(t);if(void 0===t)return -1;if(Number.isNaN(t))return -3;if(t===1/0)return -4;if(t===-1/0)return -5;if(0===t&&1/t<0)return -6;let o=a++;for(let{key:i,fn:a}of(r.set(t,o),n)){let r=a(t);if(r)return A[o]=`["${i}",${e(r)}]`,o}let l="";if(p(t))l=J(t);else{let A=Object.prototype.toString.call(t).slice(8,-1);switch(A){case"Number":case"String":case"Boolean":l=`["Object",${J(t)}]`;break;case"BigInt":l=`["BigInt",${t}]`;break;case"Date":let r=!isNaN(t.getDate());l=`["Date","${r?t.toISOString():""}"]`;break;case"RegExp":let{source:n,flags:a}=t;l=a?`["RegExp",${k(n)},"${a}"]`:`["RegExp",${k(n)}]`;break;case"Array":l="[";for(let A=0;A<t.length;A+=1)A>0&&(l+=","),A in t?(i.push(`[${A}]`),l+=e(t[A]),i.pop()):l+=-2;l+="]";break;case"Set":for(let A of(l='["Set"',t))l+=`,${e(A)}`;l+="]";break;case"Map":for(let[A,r]of(l='["Map"',t))i.push(`.get(${p(A)?J(A):"..."})`),l+=`,${e(A)},${e(r)}`,i.pop();l+="]";break;case"Int8Array":case"Uint8Array":case"Uint8ClampedArray":case"Int16Array":case"Uint16Array":case"Int32Array":case"Uint32Array":case"Float32Array":case"Float64Array":case"BigInt64Array":case"BigUint64Array":l='["'+A+'","'+F(t.buffer)+'"]';break;case"ArrayBuffer":{let e=F(t);l=`["ArrayBuffer","${e}"]`;break}default:if(!function(e){let t=Object.getPrototypeOf(e);return t===Object.prototype||null===t||Object.getOwnPropertyNames(t).sort().join("\0")===m}(t))throw new d("Cannot stringify arbitrary non-POJOs",i);if(Object.getOwnPropertySymbols(t).filter(e=>Object.getOwnPropertyDescriptor(t,e).enumerable).length>0)throw new d("Cannot stringify POJOs with symbolic keys",i);if(null===Object.getPrototypeOf(t)){for(let A in l='["null"',t)i.push(U(A)),l+=`,${k(A)},${e(t[A])}`,i.pop();l+="]"}else{l="{";let A=!1;for(let r in t)A&&(l+=","),A=!0,i.push(U(r)),l+=`${k(r)}:${e(t[r])}`,i.pop();l+="}"}}}return A[o]=l,o}(e);return o<0?`${o}`:`[${A.join(",")}]`}(t))]),"|"),s=A.name||C||a,I=r.get(a);if(I&&"object"==typeof I&&"then"in I&&(I=await I),n)try{let e=await A(...t);o(a,{humanReadableName:s,isUseCachedIfFail:!0});let n=r.set(a,u(e),h);return n&&"then"in n&&await n,e}catch(e){if(null==I)throw l(a,{humanReadableName:s,isUseCachedIfFail:!0}),e;if(i){let e=r.updateTtl?.(a,h);e&&"then"in e&&await e}return f(a,{humanReadableName:s,isUseCachedIfFail:!0}),Q(I)}else{if(null==I){l(a,{humanReadableName:s,isUseCachedIfFail:!1});let e=await A(...t),n=r.set(a,u(e),h);return n&&"then"in n&&await n,e}if(f(a,{humanReadableName:s,isUseCachedIfFail:!1}),i){let e=r.updateTtl?.(a,h);e&&"then"in e&&await e}return Q(I)}}}}export{x as createMemoize};
|
|
2
|
+
//# sourceMappingURL=serialized-memo.mjs.map
|