@gkd-kit/inspect 0.0.1756717177622 → 0.0.1758639831089

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.
Files changed (65) hide show
  1. package/dist/404.html +3 -3
  2. package/dist/assets/ActionCard.vue_vue_type_script_setup_true_lang-Mnug9DWd.js +17 -0
  3. package/dist/assets/ActionCard.vue_vue_type_script_setup_true_lang-Mnug9DWd.js.map +1 -0
  4. package/dist/assets/{DevicePage-2eLd65ot.js → DevicePage-U_3kdyd1.js} +3 -3
  5. package/dist/assets/{DevicePage-2eLd65ot.js.map → DevicePage-U_3kdyd1.js.map} +1 -1
  6. package/dist/assets/{HomePage-47_TAQ9h.js → HomePage-Bc83qKTK.js} +7 -7
  7. package/dist/assets/HomePage-Bc83qKTK.js.map +1 -0
  8. package/dist/assets/{ImportPage-DmYJkTpm.js → ImportPage-BSN51fsg.js} +2 -2
  9. package/dist/assets/{ImportPage-DmYJkTpm.js.map → ImportPage-BSN51fsg.js.map} +1 -1
  10. package/dist/assets/Input-D1JUZ06t.js +260 -0
  11. package/dist/assets/Input-D1JUZ06t.js.map +1 -0
  12. package/dist/assets/{SelectorPage-o9LIj-I1.js → SelectorPage-BYz6KuKu.js} +2 -2
  13. package/dist/assets/SelectorPage-BYz6KuKu.js.map +1 -0
  14. package/dist/assets/SnapshotPage-DDESkWey.js +278 -0
  15. package/dist/assets/SnapshotPage-DDESkWey.js.map +1 -0
  16. package/dist/assets/{SvgPage-BagXHNio.js → SvgPage-CQljgvlO.js} +2 -2
  17. package/dist/assets/{SvgPage-BagXHNio.js.map → SvgPage-CQljgvlO.js.map} +1 -1
  18. package/dist/assets/{TrackGraph-30Lwxufc.js → TrackGraph-B34JmU2y.js} +3 -3
  19. package/dist/assets/{TrackGraph-30Lwxufc.js.map → TrackGraph-B34JmU2y.js.map} +1 -1
  20. package/dist/assets/_404Page-DUCCFNAB.js +2 -0
  21. package/dist/assets/{_404Page-EBmWBN0j.js.map → _404Page-DUCCFNAB.js.map} +1 -1
  22. package/dist/assets/chunk-F2BCYXFp.js +3 -0
  23. package/dist/assets/{chunk-FQ5_3Fvt.js.map → chunk-F2BCYXFp.js.map} +1 -1
  24. package/dist/assets/{dayjs.min-DuZZSErs.js → dayjs.min-Dv-eveXa.js} +2 -2
  25. package/dist/assets/{dayjs.min-DuZZSErs.js.map → dayjs.min-Dv-eveXa.js.map} +1 -1
  26. package/dist/assets/{error-CWzaCaGi.js → error-ChBBACr4.js} +2 -2
  27. package/dist/assets/{error-CWzaCaGi.js.map → error-ChBBACr4.js.map} +1 -1
  28. package/dist/assets/{import-D46jGS_0.js → import-M_Af5KCc.js} +2 -2
  29. package/dist/assets/{import-D46jGS_0.js.map → import-M_Af5KCc.js.map} +1 -1
  30. package/dist/assets/{index-GTBK_16Z.js → index-B9sXoeZq.js} +3 -3
  31. package/dist/assets/{index-GTBK_16Z.js.map → index-B9sXoeZq.js.map} +1 -1
  32. package/dist/assets/index-B_uD-bae.js +980 -0
  33. package/dist/assets/index-B_uD-bae.js.map +1 -0
  34. package/dist/assets/{index-BOn7cIqR.css → index-BowVL0Z1.css} +1 -1
  35. package/dist/assets/{jszip.min-C6z3zxPP.js → jszip.min-C4QAILm2.js} +2 -2
  36. package/dist/assets/{jszip.min-C6z3zxPP.js.map → jszip.min-C4QAILm2.js.map} +1 -1
  37. package/dist/assets/node-C7vxFtQZ.js +126 -0
  38. package/dist/assets/node-C7vxFtQZ.js.map +1 -0
  39. package/dist/assets/polyfills-DPQP8bt_.js +2 -0
  40. package/dist/assets/polyfills-DPQP8bt_.js.map +1 -0
  41. package/dist/assets/snapshot-gWG-XXTt.js +3 -0
  42. package/dist/assets/snapshot-gWG-XXTt.js.map +1 -0
  43. package/dist/assets/{table-x678kzFG.js → table-BrOTv4AL.js} +51 -51
  44. package/dist/assets/table-BrOTv4AL.js.map +1 -0
  45. package/dist/index.html +3 -3
  46. package/package.json +32 -32
  47. package/dist/assets/ActionCard.vue_vue_type_script_setup_true_lang-BY98wOL2.js +0 -17
  48. package/dist/assets/ActionCard.vue_vue_type_script_setup_true_lang-BY98wOL2.js.map +0 -1
  49. package/dist/assets/HomePage-47_TAQ9h.js.map +0 -1
  50. package/dist/assets/Input-Br-unvKw.js +0 -260
  51. package/dist/assets/Input-Br-unvKw.js.map +0 -1
  52. package/dist/assets/SelectorPage-o9LIj-I1.js.map +0 -1
  53. package/dist/assets/SnapshotPage-055LCAoq.js +0 -272
  54. package/dist/assets/SnapshotPage-055LCAoq.js.map +0 -1
  55. package/dist/assets/_404Page-EBmWBN0j.js +0 -2
  56. package/dist/assets/chunk-FQ5_3Fvt.js +0 -3
  57. package/dist/assets/index-BDgd4jKy.js +0 -979
  58. package/dist/assets/index-BDgd4jKy.js.map +0 -1
  59. package/dist/assets/node-Dqax9l0e.js +0 -126
  60. package/dist/assets/node-Dqax9l0e.js.map +0 -1
  61. package/dist/assets/polyfills-DHsnwdd7.js +0 -2
  62. package/dist/assets/polyfills-DHsnwdd7.js.map +0 -1
  63. package/dist/assets/snapshot-B7-fb-hQ.js +0 -3
  64. package/dist/assets/snapshot-B7-fb-hQ.js.map +0 -1
  65. package/dist/assets/table-x678kzFG.js.map +0 -1
@@ -0,0 +1,3 @@
1
+ import{bN as T,a_ as w,bO as k,bP as U,b7 as G,bQ as E,aO as x,aN as q,aM as S,bE as y}from"./index-B_uD-bae.js";class O{value;next;constructor(t){this.value=t}}class D{#e;#t;#s;constructor(){this.clear()}enqueue(t){const o=new O(t);this.#e?(this.#t.next=o,this.#t=o):(this.#e=o,this.#t=o),this.#s++}dequeue(){const t=this.#e;if(t)return this.#e=this.#e.next,this.#s--,t.value}peek(){if(this.#e)return this.#e.value}clear(){this.#e=void 0,this.#t=void 0,this.#s=0}get size(){return this.#s}*[Symbol.iterator](){let t=this.#e;for(;t;)yield t.value,t=t.next}*drain(){for(;this.#e;)yield this.dequeue()}}function X(e){P(e);const t=new D;let o=0;const r=()=>{o<e&&t.size>0&&(o++,t.dequeue()())},a=()=>{o--,r()},d=async(s,n,c)=>{const l=(async()=>s(...c))();n(l);try{await l}catch{}a()},i=(s,n,c)=>{new Promise(l=>{t.enqueue(l)}).then(d.bind(void 0,s,n,c)),o<e&&r()},m=(s,...n)=>new Promise(c=>{i(s,c,n)});return Object.defineProperties(m,{activeCount:{get:()=>o},pendingCount:{get:()=>t.size},clearQueue:{value(){t.clear()}},concurrency:{get:()=>e,set(s){P(s),e=s,queueMicrotask(()=>{for(;o<e&&t.size>0;)r()})}},map:{async value(s,n){const c=s.map((l,h)=>this(n,l,h));return Promise.all(c)}}}),m}function P(e){if(!((Number.isInteger(e)||e===Number.POSITIVE_INFINITY)&&e>0))throw new TypeError("Expected `concurrency` to be a number from 1 and up")}const H=e=>(...t)=>e()(...t),M=H(()=>{var e;return(e=window.__NetworkExtension__)==null?void 0:e.GM_xmlhttpRequest}),A=()=>{var e;return!!((e=window.__NetworkExtension__)!=null&&e.GM_xmlhttpRequest)},C=(e="")=>{const t=new Headers;return e.replace(/\r?\n[\t ]+/g," ").split("\r").map(function(r){return r.startsWith(`
2
+ `)?r.substring(1):r}).forEach(function(r){var i;let a=r.split(":"),d=(i=a.shift())==null?void 0:i.trim();if(d){let m=a.join(":").trim();try{t.append(d,m)}catch{}}}),t},z=(e="")=>{try{return e===""&&location.href?location.href:e}catch{return e}},L=async(e,t={},o)=>{var n;const r=new Request(e,t).clone();if((n=r.signal)!=null&&n.aborted)throw new DOMException("Aborted","AbortError");const a=r.method.toUpperCase(),d=z(r.url),i=new Headers(r.headers);new Headers(t.headers).forEach((c,l)=>{i.set(l,c)});let m=!1,s;return a!=="GET"&&t.body&&(typeof t.body=="string"||t.body instanceof URLSearchParams?s=t.body:t.body instanceof FormData?(s=t.body,i.delete("content-type")):(m=!0,s=await r.blob())),new Promise((c,l)=>{var g;let h={method:a,url:d,headers:T(i),data:s,binary:m,responseType:a==="GET"?"blob":void 0,async onload(u){await w();let f=!1;u.response instanceof Blob&&(f=u.response.size===0);const v=new Response((f?null:u.response)||null,{status:u.status,statusText:u.statusText,headers:C(u.responseHeaders)});Object.defineProperty(v,"url",{value:u.finalUrl}),c(v)},async onerror(u){await w(),l(new TypeError("Network request onerror failed",{cause:u}))},async ontimeout(){await w(),l(new TypeError("Network request ontimeout failed"))},async onabort(){await w(),l(new DOMException("Aborted","AbortError"))},async onreadystatechange(u){var f;u.readyState===4&&((f=r.signal)==null||f.removeEventListener("abort",I))}};typeof o=="function"&&(h=o(h));const R=M(h);function I(){R.abort()}(g=r.signal)==null||g.addEventListener("abort",I)})},F=(e,t)=>((t==null?void 0:t.method)||e.method).toUpperCase()==="GET",B=async(e,t,o)=>{const r=new Request(e),a=new URL(r.url);if(k(a))return fetch(e,t);if(A())return L(e,t,o);if(F(r,t)&&U(a.href)){const d=new URL("https://proxy.gkd.li");d.searchParams.set("proxyUrl",a.href);const i=new Request(e,t);return fetch(d,{method:i.method,headers:i.headers,body:i.body})}else throw G().networkErrorDlgVisible=!0,new Error("gm is not supported")},b=(e={})=>{e.driver??=E.INDEXEDDB;const t=E.createInstance(e);return{keys:async()=>t.keys(),hasItem:async s=>{const n=s.toString();return t.keys().then(c=>c.includes(n))},getItem:async s=>t.getItem(s.toString()),setItem:async(s,n)=>t.setItem(s.toString(),n),removeItem:async s=>t.removeItem(s.toString()),getAllItems:async()=>Promise.all((await t.keys()).map(s=>t.getItem(s)))}},p=b({name:"snapshot",version:1}),j=p.setItem;p.setItem=async(e,t)=>{const o={...t,nodes:[]};return await N.setItem(e,o),j(e,t)};const Q=p.removeItem;p.removeItem=async e=>{await Promise.all([Q(e),N.removeItem(e),_.removeItem(e),y[e]&&delete y[e]])};const N=b({name:"shallowSnapshot",version:1}),_=b({name:"screenshot",version:1}),W=async(e,t)=>{Object.entries(x).forEach(([o,r])=>{r==e.id&&delete x[o]}),q[e.id]&&delete q[e.id],S[e.id]&&delete S[e.id],y[e.id]=Date.now(),await Promise.all([p.setItem(e.id,e),_.setItem(e.id,t)])};export{p as a,_ as b,W as c,B as e,A as g,X as p,N as s};
3
+ //# sourceMappingURL=snapshot-gWG-XXTt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot-gWG-XXTt.js","sources":["../../node_modules/.pnpm/yocto-queue@1.2.1/node_modules/yocto-queue/index.js","../../node_modules/.pnpm/p-limit@7.1.1/node_modules/p-limit/index.js","../../src/utils/gm.ts","../../src/utils/fetch.ts","../../src/utils/snapshot.ts"],"sourcesContent":["/*\nHow it works:\n`this.#head` is an instance of `Node` which keeps track of its current value and nests another instance of `Node` that keeps the value that comes after it. When a value is provided to `.enqueue()`, the code needs to iterate through `this.#head`, going deeper and deeper to find the last value. However, iterating through every single item is slow. This problem is solved by saving a reference to the last value as `this.#tail` so that it can reference it to add a new value.\n*/\n\nclass Node {\n\tvalue;\n\tnext;\n\n\tconstructor(value) {\n\t\tthis.value = value;\n\t}\n}\n\nexport default class Queue {\n\t#head;\n\t#tail;\n\t#size;\n\n\tconstructor() {\n\t\tthis.clear();\n\t}\n\n\tenqueue(value) {\n\t\tconst node = new Node(value);\n\n\t\tif (this.#head) {\n\t\t\tthis.#tail.next = node;\n\t\t\tthis.#tail = node;\n\t\t} else {\n\t\t\tthis.#head = node;\n\t\t\tthis.#tail = node;\n\t\t}\n\n\t\tthis.#size++;\n\t}\n\n\tdequeue() {\n\t\tconst current = this.#head;\n\t\tif (!current) {\n\t\t\treturn;\n\t\t}\n\n\t\tthis.#head = this.#head.next;\n\t\tthis.#size--;\n\t\treturn current.value;\n\t}\n\n\tpeek() {\n\t\tif (!this.#head) {\n\t\t\treturn;\n\t\t}\n\n\t\treturn this.#head.value;\n\n\t\t// TODO: Node.js 18.\n\t\t// return this.#head?.value;\n\t}\n\n\tclear() {\n\t\tthis.#head = undefined;\n\t\tthis.#tail = undefined;\n\t\tthis.#size = 0;\n\t}\n\n\tget size() {\n\t\treturn this.#size;\n\t}\n\n\t* [Symbol.iterator]() {\n\t\tlet current = this.#head;\n\n\t\twhile (current) {\n\t\t\tyield current.value;\n\t\t\tcurrent = current.next;\n\t\t}\n\t}\n\n\t* drain() {\n\t\twhile (this.#head) {\n\t\t\tyield this.dequeue();\n\t\t}\n\t}\n}\n","import Queue from 'yocto-queue';\n\nexport default function pLimit(concurrency) {\n\tvalidateConcurrency(concurrency);\n\n\tconst queue = new Queue();\n\tlet activeCount = 0;\n\n\tconst resumeNext = () => {\n\t\t// Process the next queued function if we're under the concurrency limit\n\t\tif (activeCount < concurrency && queue.size > 0) {\n\t\t\tactiveCount++;\n\t\t\tqueue.dequeue()();\n\t\t}\n\t};\n\n\tconst next = () => {\n\t\tactiveCount--;\n\t\tresumeNext();\n\t};\n\n\tconst run = async (function_, resolve, arguments_) => {\n\t\t// Execute the function and capture the result promise\n\t\tconst result = (async () => function_(...arguments_))();\n\n\t\t// Resolve immediately with the promise (don't wait for completion)\n\t\tresolve(result);\n\n\t\t// Wait for the function to complete (success or failure)\n\t\t// We catch errors here to prevent unhandled rejections,\n\t\t// but the original promise rejection is preserved for the caller\n\t\ttry {\n\t\t\tawait result;\n\t\t} catch {}\n\n\t\t// Decrement active count and process next queued function\n\t\tnext();\n\t};\n\n\tconst enqueue = (function_, resolve, arguments_) => {\n\t\t// Queue the internal resolve function instead of the run function\n\t\t// to preserve the asynchronous execution context.\n\t\tnew Promise(internalResolve => { // eslint-disable-line promise/param-names\n\t\t\tqueue.enqueue(internalResolve);\n\t\t}).then(run.bind(undefined, function_, resolve, arguments_)); // eslint-disable-line promise/prefer-await-to-then\n\n\t\t// Start processing immediately if we haven't reached the concurrency limit\n\t\tif (activeCount < concurrency) {\n\t\t\tresumeNext();\n\t\t}\n\t};\n\n\tconst generator = (function_, ...arguments_) => new Promise(resolve => {\n\t\tenqueue(function_, resolve, arguments_);\n\t});\n\n\tObject.defineProperties(generator, {\n\t\tactiveCount: {\n\t\t\tget: () => activeCount,\n\t\t},\n\t\tpendingCount: {\n\t\t\tget: () => queue.size,\n\t\t},\n\t\tclearQueue: {\n\t\t\tvalue() {\n\t\t\t\tqueue.clear();\n\t\t\t},\n\t\t},\n\t\tconcurrency: {\n\t\t\tget: () => concurrency,\n\n\t\t\tset(newConcurrency) {\n\t\t\t\tvalidateConcurrency(newConcurrency);\n\t\t\t\tconcurrency = newConcurrency;\n\n\t\t\t\tqueueMicrotask(() => {\n\t\t\t\t\t// eslint-disable-next-line no-unmodified-loop-condition\n\t\t\t\t\twhile (activeCount < concurrency && queue.size > 0) {\n\t\t\t\t\t\tresumeNext();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t},\n\t\t},\n\t\tmap: {\n\t\t\tasync value(array, function_) {\n\t\t\t\tconst promises = array.map((value, index) => this(function_, value, index));\n\t\t\t\treturn Promise.all(promises);\n\t\t\t},\n\t\t},\n\t});\n\n\treturn generator;\n}\n\nexport function limitFunction(function_, options) {\n\tconst {concurrency} = options;\n\tconst limit = pLimit(concurrency);\n\n\treturn (...arguments_) => limit(() => function_(...arguments_));\n}\n\nfunction validateConcurrency(concurrency) {\n\tif (!((Number.isInteger(concurrency) || concurrency === Number.POSITIVE_INFINITY) && concurrency > 0)) {\n\t\tthrow new TypeError('Expected `concurrency` to be a number from 1 and up');\n\t}\n}\n","import { delay } from './others';\nimport { headers2obj } from './others';\n\nexport type GmXhrOptions =\n import('vite-plugin-monkey/dist/client').GmXmlhttpRequestOption<\n 'blob' | 'arraybuffer',\n undefined\n >;\nconst proxyFc = <T extends (...args: any[]) => any>(getFc: () => T) => {\n return ((...args: any[]) => getFc()(...args)) as T;\n};\n\nexport const GM_xmlhttpRequest = proxyFc(\n () => window.__NetworkExtension__?.GM_xmlhttpRequest,\n);\n\nexport const gmOk = () => {\n return !!window.__NetworkExtension__?.GM_xmlhttpRequest;\n};\n\n/**\n * https://github.com/github/fetch/blob/fb5b0cf42b470faf8c5448ab461d561f34380a30/fetch.js#L422\n */\nexport const parseHeaders = (rawHeaders = '') => {\n const headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n const preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n // Avoiding split via regex to work around a common IE11 bug with the core-js 3.6.0 regex polyfill\n // https://github.com/github/fetch/issues/748\n // https://github.com/zloirock/core-js/issues/751\n preProcessedHeaders\n .split('\\r')\n .map(function (header) {\n return header.startsWith(`\\n`) ? header.substring(1) : header;\n })\n .forEach(function (line) {\n let parts = line.split(':');\n let key = parts.shift()?.trim();\n if (key) {\n let value = parts.join(':').trim();\n try {\n // https://github.com/gkd-kit/subscription/pull/762#discussion_r1349695154\n headers.append(key, value);\n } catch {}\n }\n });\n return headers;\n};\n\n/**\n * https://github.com/github/fetch/blob/9a6d748b394a2c16b250262fcaf46afd5364b415/fetch.js#L555\n */\nconst fixUrl = (url = '') => {\n try {\n return url === '' && location.href ? location.href : url;\n } catch {\n return url;\n }\n};\n\n/**\n * simulate window.fetch with GM_xmlhttpRequest\n *\n * because [Request](https://developer.mozilla.org/en-US/docs/Web/API/Request) will delete [Forbidden_header_name](https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name)\n *\n * so you must manually modify these headers by set the second parameter of GM_fetch\n * @example\n * GM_fetch(\n * new Request('https://www.pixiv.net/', {\n * headers: { referer: 'https://www.pixiv.net/' }, // it will not work !!!\n * }),\n * );\n * GM_fetch(new Request('https://www.pixiv.net/'), {\n * headers: { referer: 'https://www.pixiv.net/' }, // it will work\n * headers: new Headers({ referer: 'https://www.pixiv.net/' }), // it will also work\n * });\n */\nexport const GM_fetch = async (\n input: RequestInfo | URL,\n init: RequestInit = {},\n xhrDetails?: (arg: GmXhrOptions) => GmXhrOptions,\n): Promise<Response> => {\n const request = new Request(input, init).clone();\n if (request.signal?.aborted) {\n throw new DOMException('Aborted', 'AbortError');\n }\n\n const method = request.method.toUpperCase();\n const url = fixUrl(request.url);\n\n // headers\n const sendHeaders = new Headers(request.headers);\n new Headers(init.headers).forEach((value, key) => {\n sendHeaders.set(key, value);\n });\n\n let binary = false;\n let data: URLSearchParams | FormData | Blob | string | undefined = undefined;\n\n if (method !== 'GET') {\n if (init.body) {\n if (\n typeof init.body == 'string' ||\n init.body instanceof URLSearchParams\n ) {\n data = init.body;\n } else if (init.body instanceof FormData) {\n data = init.body;\n sendHeaders.delete(`content-type`);\n } else {\n binary = true;\n data = await request.blob();\n }\n }\n }\n return new Promise<Response>((resolve, reject) => {\n let initXhrDetails: GmXhrOptions = {\n method,\n url,\n headers: headers2obj(sendHeaders),\n data,\n binary,\n // temporarily fix tampermonkey bug when post github api\n responseType: method === 'GET' ? 'blob' : undefined,\n async onload(e) {\n await delay();\n let useNull = false;\n if (e.response instanceof Blob) {\n useNull = e.response.size === 0;\n }\n // 返回数据为二进制时,必须指定 responseType 为 'blob' 或 'arraybuffer',否则编码错误\n const resp = new Response((useNull ? null : e.response) || null, {\n status: e.status,\n statusText: e.statusText,\n headers: parseHeaders(e.responseHeaders),\n });\n Object.defineProperty(resp, 'url', { value: e.finalUrl });\n resolve(resp);\n },\n async onerror(e) {\n await delay();\n reject(new TypeError('Network request onerror failed', { cause: e }));\n },\n async ontimeout() {\n await delay();\n reject(new TypeError('Network request ontimeout failed'));\n },\n async onabort() {\n await delay();\n reject(new DOMException('Aborted', 'AbortError'));\n },\n async onreadystatechange(response) {\n if (response.readyState === 4) {\n request.signal?.removeEventListener('abort', abortXhr);\n }\n },\n };\n if (typeof xhrDetails == 'function') {\n initXhrDetails = xhrDetails(initXhrDetails);\n }\n const handle = GM_xmlhttpRequest(initXhrDetails);\n function abortXhr() {\n handle.abort();\n }\n request.signal?.addEventListener('abort', abortXhr);\n });\n};\n","import { GM_fetch, gmOk, type GmXhrOptions } from './gm';\nimport { isCanProxyImportFileUrl, isAllowCorsUrl } from './url';\n\nconst isGetReq = (req: Request, init?: RequestInit) => {\n return (init?.method || req.method).toUpperCase() === 'GET';\n};\n\nexport const enhanceFetch = async (\n input: RequestInfo | URL,\n init?: RequestInit,\n xhrDetails?: (arg: GmXhrOptions) => GmXhrOptions,\n): Promise<Response> => {\n const req = new Request(input);\n const u = new URL(req.url);\n if (import.meta.env.PROD && isAllowCorsUrl(u)) return fetch(input, init);\n if (gmOk()) {\n // with cookie\n // export snapshot need\n return GM_fetch(input, init, xhrDetails);\n } else if (isGetReq(req, init) && isCanProxyImportFileUrl(u.href)) {\n const proxyUrl = new URL(`https://proxy.gkd.li`);\n proxyUrl.searchParams.set(`proxyUrl`, u.href);\n const request = new Request(input, init);\n return fetch(proxyUrl, {\n method: request.method,\n headers: request.headers,\n body: request.body,\n });\n } else {\n useGlobalStore().networkErrorDlgVisible = true;\n throw new Error(`gm is not supported`);\n }\n};\n","import localforage from 'localforage';\n\nconst useStorage = <T>(options: LocalForageOptions = {}) => {\n options.driver ??= localforage.INDEXEDDB;\n const storage = localforage.createInstance(options);\n const setItem = async (key: string | number, value: T) => {\n return storage.setItem(key.toString(), value);\n };\n const getItem = async (key: string | number) => {\n return storage.getItem<T>(key.toString());\n };\n const getAllItems = async (): Promise<T[]> => {\n return Promise.all(\n (await storage.keys()).map((k) => storage.getItem(k) as Promise<T>),\n );\n };\n const removeItem = async (key: string | number) => {\n return storage.removeItem(key.toString());\n };\n\n const hasItem = async (key: string | number) => {\n const keyStr = key.toString();\n return storage.keys().then((r) => r.includes(keyStr));\n };\n const keys = async () => {\n return storage.keys();\n };\n\n return {\n keys,\n hasItem,\n getItem,\n setItem,\n removeItem,\n getAllItems,\n };\n};\n\nexport const snapshotStorage = useStorage<Snapshot>({\n name: `snapshot`,\n version: 1,\n});\n\nconst snapshotSetItem = snapshotStorage.setItem;\nsnapshotStorage.setItem = async (key, value) => {\n const shallowValue = { ...value, nodes: [] };\n await shallowSnapshotStorage.setItem(key, shallowValue);\n return snapshotSetItem(key, value);\n};\n\nconst snapshotRemoveItem = snapshotStorage.removeItem;\nsnapshotStorage.removeItem = async (key) => {\n await Promise.all([\n snapshotRemoveItem(key),\n shallowSnapshotStorage.removeItem(key),\n screenshotStorage.removeItem(key),\n snapshotImportTime[key] && delete snapshotImportTime[key],\n ]);\n};\n\nexport const shallowSnapshotStorage = useStorage<Snapshot>({\n name: `shallowSnapshot`,\n version: 1,\n});\n\nexport const screenshotStorage = useStorage<ArrayBuffer>({\n name: `screenshot`,\n version: 1,\n});\n\nexport const setSnapshot = async (snapshot: Snapshot, bf: ArrayBuffer) => {\n Object.entries(importSnapshotId).forEach(([k, v]) => {\n if (v == snapshot.id) {\n delete importSnapshotId[k];\n }\n });\n if (snapshotImageId[snapshot.id]) {\n delete snapshotImageId[snapshot.id];\n }\n if (snapshotImportId[snapshot.id]) {\n delete snapshotImportId[snapshot.id];\n }\n snapshotImportTime[snapshot.id] = Date.now();\n await Promise.all([\n snapshotStorage.setItem(snapshot.id, snapshot),\n screenshotStorage.setItem(snapshot.id, bf),\n ]);\n};\n"],"names":["Node","value","Queue","#head","#tail","#size","node","current","pLimit","concurrency","validateConcurrency","queue","activeCount","resumeNext","next","run","function_","resolve","arguments_","result","enqueue","internalResolve","generator","newConcurrency","array","promises","index","proxyFc","getFc","args","GM_xmlhttpRequest","_a","gmOk","parseHeaders","rawHeaders","headers","header","line","parts","key","fixUrl","url","GM_fetch","input","init","xhrDetails","request","method","sendHeaders","binary","data","reject","initXhrDetails","headers2obj","e","delay","useNull","resp","response","abortXhr","handle","isGetReq","req","enhanceFetch","u","isAllowCorsUrl","isCanProxyImportFileUrl","proxyUrl","useGlobalStore","useStorage","options","localforage","storage","keyStr","r","k","snapshotStorage","snapshotSetItem","shallowValue","shallowSnapshotStorage","snapshotRemoveItem","screenshotStorage","snapshotImportTime","setSnapshot","snapshot","bf","importSnapshotId","v","snapshotImageId","snapshotImportId"],"mappings":"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","x_google_ignoreList":[0,1]}