@moontaiworks/fanbox-dl 1.5.1 → 1.5.2

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.
@@ -1,2 +1,2 @@
1
- "use strict";var b=Object.defineProperty;var O=Object.getOwnPropertyDescriptor;var I=Object.getOwnPropertyNames;var k=Object.prototype.hasOwnProperty;var L=t=>{throw TypeError(t)};var N=(t,e)=>{for(var s in e)b(t,s,{get:e[s],enumerable:!0})},$=(t,e,s,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of I(e))!k.call(t,o)&&o!==s&&b(t,o,{get:()=>e[o],enumerable:!(r=O(e,o))||r.enumerable});return t};var _=t=>$(b({},"__esModule",{value:!0}),t);var F=(t,e,s)=>e.has(t)||L("Cannot "+s);var n=(t,e,s)=>(F(t,e,"read from private field"),s?s.call(t):e.get(t)),p=(t,e,s)=>e.has(t)?L("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,s),y=(t,e,s,r)=>(F(t,e,"write to private field"),r?r.call(t,s):e.set(t,s),s);var K={};N(K,{FanboxApiError:()=>c,FanboxClient:()=>C});module.exports=_(K);var w=require("http2");var a,d=class{constructor(){p(this,a,new Map)}async closeAll(){let e=[...n(this,a).values()];n(this,a).clear(),await Promise.all(e.map(B))}getSession(e){let s=new URL(e).origin,r=n(this,a).get(s);if(r&&!r.closed&&!r.destroyed)return r;let o=(0,w.connect)(s);n(this,a).set(s,o);let i=()=>{n(this,a).get(s)===o&&n(this,a).delete(s)};return o.once("close",i),o.once("error",i),o}};a=new WeakMap;function B(t){return t.closed||t.destroyed?Promise.resolve():new Promise(e=>{t.close(e)})}var D=":status",S=class extends Error{constructor(e){super(e),this.name="Http2Error"}},h,x=class{constructor(){p(this,h,new d)}fetch(e){let s=e instanceof Request?e:new Request(e),r=J(s),i=n(this,h).getSession(s.url).request(r,{endStream:!s.body});return new Promise((f,g)=>{let m=!1;i.once("error",g),i.once("close",()=>{m||g(new S("HTTP/2 stream closed before response"))}),i.once("response",R=>{m=!0,f(new Response(i,{headers:W(R),status:M(R[D])}))}),s.body&&i.end(s.body)})}};h=new WeakMap;function J(t){let e=new URL(t.url),s={...Object.fromEntries(t.headers)};return s[":authority"]=e.host,s[":method"]=t.method.toUpperCase(),s[":path"]=`${e.pathname}${e.search}`,s[":scheme"]=e.protocol.slice(0,-1),s}function W(t){let e=new Headers;for(let[s,r]of Object.entries(t))if(!(s.startsWith(":")||r===void 0))if(Array.isArray(r))for(let o of r)e.append(s,o);else e.set(s,r);return e}function M(t){return typeof t=="number"?t:Array.isArray(t)?Number(t[0]??0):Number(t??0)}async function H(t){return this.get("creator.get",t)}async function j(t){return this.get("post.paginateCreator",t)}async function T(t){return this.get("plan.listCreator",t)}async function A(t){return this.get("post.listCreator",t)}async function U(t){return this.get("post.info",t)}async function E(t={}){return this.get("post.listHome",t)}async function v(t={}){return this.get("post.listSupporting",t)}async function q(){return this.get("creator.listFollowing")}async function G(){return this.get("plan.listSupporting")}var X="https://api.fanbox.cc",c=class extends Error{constructor(e,s){super(`FANBOX API request failed: ${e.status} ${e.statusText}`),this.name="FanboxApiError",this.body=s,this.status=e.status,this.statusText=e.statusText}},l,u,P,C=class{constructor(e={}){this.getCreator=H;this.getPost=U;this.listCreatorPlans=T;this.listCreatorPosts=A;this.listFollowingCreators=q;this.listHomePosts=E;this.listSupportingPlans=G;this.listSupportingPosts=v;this.paginateCreatorPosts=j;p(this,l);p(this,u);p(this,P);y(this,l,e.baseUrl??X),y(this,u,e.headers??{}),y(this,P,e.transport??new x)}async get(e,s={}){let r=new URL(e,n(this,l).endsWith("/")?n(this,l):`${n(this,l)}/`);for(let[g,m]of Object.entries(s))m!==void 0&&r.searchParams.set(g,String(m));let o=new Request(r,{headers:n(this,u)}),i=await n(this,P).fetch(o),f=await z(i);if(!i.ok)throw new c(i,f);return f.body}};l=new WeakMap,u=new WeakMap,P=new WeakMap;async function z(t){let e=await t.text();try{return JSON.parse(e)}catch{return e}}0&&(module.exports={FanboxApiError,FanboxClient});
1
+ "use strict";var R=Object.defineProperty;var $=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var B=Object.prototype.hasOwnProperty;var j=s=>{throw TypeError(s)};var D=(s,t)=>{for(var e in t)R(s,e,{get:t[e],enumerable:!0})},J=(s,t,e,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let r of _(t))!B.call(s,r)&&r!==e&&R(s,r,{get:()=>t[r],enumerable:!(o=$(t,r))||o.enumerable});return s};var W=s=>J(R({},"__esModule",{value:!0}),s);var L=(s,t,e)=>t.has(s)||j("Cannot "+e);var n=(s,t,e)=>(L(s,t,"read from private field"),e?e.call(s):t.get(s)),a=(s,t,e)=>t.has(s)?j("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(s):t.set(s,e),l=(s,t,e,o)=>(L(s,t,"write to private field"),o?o.call(s,e):t.set(s,e),e),F=(s,t,e)=>(L(s,t,"access private method"),e);var tt={};D(tt,{FanboxApiError:()=>g,FanboxClient:()=>S});module.exports=W(tt);var T=require("http2");var p,P,c,O,I,C=class{constructor({sessionsPerOrigin:t=5}={}){a(this,c);a(this,p,new Map);a(this,P);l(this,P,Math.max(1,Math.floor(t)))}async closeAll(){let t=[...n(this,p).values()].flatMap(e=>e.sessions);n(this,p).clear(),await Promise.all(t.map(X))}getSession(t){let e=new URL(t).origin,o=n(this,p).get(e)??F(this,c,O).call(this,e);if(o.sessions.length<n(this,P)){let i=F(this,c,I).call(this,e);return o.sessions.push(i),i}let r=o.sessions[o.nextIndex%o.sessions.length];return o.nextIndex=(o.nextIndex+1)%o.sessions.length,r}};p=new WeakMap,P=new WeakMap,c=new WeakSet,O=function(t){let e={nextIndex:0,sessions:[]};return n(this,p).set(t,e),e},I=function(t){let e=(0,T.connect)(t),o=()=>{let r=n(this,p).get(t);if(!r)return;let i=r.sessions.indexOf(e);i>=0&&(r.sessions.splice(i,1),r.nextIndex=Math.min(r.nextIndex,r.sessions.length)),r.sessions.length===0&&n(this,p).delete(t)};return e.once("close",o),e.once("error",o),e};function X(s){return s.closed||s.destroyed?Promise.resolve():new Promise(t=>{s.close(t)})}var z=":status",H=class extends Error{constructor(t){super(t),this.name="Http2Error"}},f,b=class{constructor(t={}){a(this,f);l(this,f,new C(t))}fetch(t){let e=t instanceof Request?t:new Request(t),o=K(e),i=n(this,f).getSession(e.url).request(o,{endStream:!e.body});return new Promise((y,h)=>{let u=!1;i.once("error",h),i.once("close",()=>{u||h(new H("HTTP/2 stream closed before response"))}),i.once("response",w=>{u=!0,y(new Response(i,{headers:Q(w),status:V(w[z])}))}),e.body&&i.end(e.body)})}};f=new WeakMap;function K(s){let t=new URL(s.url),e={...Object.fromEntries(s.headers)};return e[":authority"]=t.host,e[":method"]=s.method.toUpperCase(),e[":path"]=`${t.pathname}${t.search}`,e[":scheme"]=t.protocol.slice(0,-1),e}function Q(s){let t=new Headers;for(let[e,o]of Object.entries(s))if(!(e.startsWith(":")||o===void 0))if(Array.isArray(o))for(let r of o)t.append(e,r);else t.set(e,o);return t}function V(s){return typeof s=="number"?s:Array.isArray(s)?Number(s[0]??0):Number(s??0)}async function A(s){return this.get("creator.get",s)}async function U(s){return this.get("post.paginateCreator",s)}async function E(s){return this.get("plan.listCreator",s)}async function M(s){return this.get("post.listCreator",s)}async function v(s){return this.get("post.info",s)}async function q(s={}){return this.get("post.listHome",s)}async function G(s={}){return this.get("post.listSupporting",s)}async function k(){return this.get("creator.listFollowing")}async function N(){return this.get("plan.listSupporting")}var Y="https://api.fanbox.cc",g=class extends Error{constructor(t,e){super(`FANBOX API request failed: ${t.status} ${t.statusText}`),this.name="FanboxApiError",this.body=e,this.status=t.status,this.statusText=t.statusText}},m,x,d,S=class{constructor(t={}){this.getCreator=A;this.getPost=v;this.listCreatorPlans=E;this.listCreatorPosts=M;this.listFollowingCreators=k;this.listHomePosts=q;this.listSupportingPlans=N;this.listSupportingPosts=G;this.paginateCreatorPosts=U;a(this,m);a(this,x);a(this,d);l(this,m,t.baseUrl??Y),l(this,x,t.headers??{}),l(this,d,t.transport??new b)}async get(t,e={}){let o=new URL(t,n(this,m).endsWith("/")?n(this,m):`${n(this,m)}/`);for(let[h,u]of Object.entries(e))u!==void 0&&o.searchParams.set(h,String(u));let r=new Request(o,{headers:n(this,x)}),i=await n(this,d).fetch(r),y=await Z(i);if(!i.ok)throw new g(i,y);return y.body}};m=new WeakMap,x=new WeakMap,d=new WeakMap;async function Z(s){let t=await s.text();try{return JSON.parse(t)}catch{return t}}0&&(module.exports={FanboxApiError,FanboxClient});
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/transport/http2-session.ts","../../src/transport/http2.ts","../../src/client/endpoints/creator-get.ts","../../src/client/endpoints/creator-list-pages.ts","../../src/client/endpoints/creator-list-plans.ts","../../src/client/endpoints/creator-list-posts.ts","../../src/client/endpoints/post-info.ts","../../src/client/endpoints/post-list-home.ts","../../src/client/endpoints/post-list-supporting.ts","../../src/client/endpoints/user-list-following.ts","../../src/client/endpoints/user-list-supporting.ts","../../src/client/client.ts"],"sourcesContent":["export { FanboxApiError, FanboxClient } from \"./client/client.js\";\nexport type * from \"./client/types.js\";\n","import { type ClientHttp2Session, connect } from \"node:http2\";\n\nexport class Http2SessionManager {\n readonly #sessions = new Map<string, ClientHttp2Session>();\n\n async closeAll(): Promise<void> {\n const sessions = [...this.#sessions.values()];\n this.#sessions.clear();\n await Promise.all(sessions.map(closeHttp2Session));\n }\n\n getSession(url: string): ClientHttp2Session {\n const origin = new URL(url).origin;\n const existing = this.#sessions.get(origin);\n if (existing && !existing.closed && !existing.destroyed) {\n return existing;\n }\n\n // Create a new HTTP/2 session for the origin\n const session = connect(origin);\n this.#sessions.set(origin, session);\n\n const cleanup = () => {\n if (this.#sessions.get(origin) === session) {\n this.#sessions.delete(origin);\n }\n };\n session.once(\"close\", cleanup);\n session.once(\"error\", cleanup);\n\n return session;\n }\n}\n\nfunction closeHttp2Session(session: ClientHttp2Session): Promise<void> {\n if (session.closed || session.destroyed) {\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n session.close(resolve);\n });\n}\n","import { Http2SessionManager } from \"./http2-session.js\";\n\nconst HTTP2_HEADER_STATUS = \":status\";\n\nexport interface HttpTransport {\n fetch(input: Request | string | URL): Promise<Response>;\n}\n\nexport class Http2Error extends Error {\n public constructor(message: string) {\n super(message);\n this.name = \"Http2Error\";\n }\n}\n\nexport class Http2Transport {\n readonly #pool = new Http2SessionManager();\n\n fetch(input: Request | string | URL) {\n const request = input instanceof Request ? input : new Request(input);\n const headers = attachHttp2Headers(request);\n\n const session = this.#pool.getSession(request.url);\n const stream = session.request(headers, { endStream: !request.body });\n\n return new Promise<Response>((resolve, reject) => {\n let settled = false;\n stream.once(\"error\", reject);\n stream.once(\"close\", () => {\n if (!settled) {\n reject(new Http2Error(`HTTP/2 stream closed before response`));\n }\n });\n\n stream.once(\"response\", (responseHeaders) => {\n settled = true;\n resolve(\n new Response(stream, {\n headers: createResponseHeaders(responseHeaders),\n status: parseStatus(responseHeaders[HTTP2_HEADER_STATUS]),\n }),\n );\n });\n\n // If the request has a body, write it to the stream. If writing fails, destroy the stream to trigger error handling.\n if (request.body) stream.end(request.body);\n });\n }\n}\n\nfunction attachHttp2Headers(request: Request) {\n const url = new URL(request.url);\n const headers = { ...Object.fromEntries(request.headers) };\n\n headers[\":authority\"] = url.host;\n headers[\":method\"] = request.method.toUpperCase();\n headers[\":path\"] = `${url.pathname}${url.search}`;\n headers[\":scheme\"] = url.protocol.slice(0, -1);\n\n return headers;\n}\n\nfunction createResponseHeaders(\n headers: Record<string, string | string[] | undefined>,\n): Headers {\n const result = new Headers();\n for (const [key, value] of Object.entries(headers)) {\n if (\n // ignore HTTP/2 pseudo-headers in the response\n key.startsWith(\":\") ||\n value === undefined\n )\n continue;\n\n if (Array.isArray(value)) {\n for (const item of value) {\n result.append(key, item);\n }\n } else {\n result.set(key, value);\n }\n }\n\n return result;\n}\n\nfunction parseStatus(status: number | string | string[] | undefined): number {\n if (typeof status === \"number\") {\n return status;\n }\n if (Array.isArray(status)) {\n return Number(status[0] ?? 0);\n }\n\n return Number(status ?? 0);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { Creator } from \"../models/creator.js\";\n\nexport interface GetCreatorParams {\n creatorId: string;\n}\n\nexport type GetCreatorResult = Creator;\n\n/**\n * Get detailed information about a specific creator.\n */\nexport async function getCreator(\n this: FanboxClient,\n params: GetCreatorParams,\n): Promise<GetCreatorResult> {\n return this.get(\"creator.get\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { PostSort } from \"../models/post.js\";\n\nexport interface PaginateCreatorPostsParams {\n creatorId: string;\n sort?: PostSort;\n}\n\nexport type PaginateCreatorPostsResult = string[];\n\n/**\n * List all urls to the pages, which paginated by the given conditions.\n */\nexport async function paginateCreatorPosts(\n this: FanboxClient,\n params: PaginateCreatorPostsParams,\n): Promise<PaginateCreatorPostsResult> {\n return this.get(\"post.paginateCreator\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { Plan } from \"../models/plan.js\";\n\nexport interface ListCreatorPlansParams {\n creatorId: string;\n}\n\nexport type ListCreatorPlansResult = Plan[];\n\n/**\n * List plans for a specific creator.\n */\nexport async function listCreatorPlans(\n this: FanboxClient,\n params: ListCreatorPlansParams,\n): Promise<ListCreatorPlansResult> {\n return this.get(\"plan.listCreator\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { PostListParams, PostSort, PostSummary } from \"../models/post.js\";\n\nexport interface ListCreatorPostsParams extends PostListParams {\n creatorId: string;\n firstId?: string;\n firstPublishedDatetime?: string;\n sort?: PostSort;\n}\n\nexport type ListCreatorPostsResult = PostSummary[];\n\n/**\n * List posts for a specific creator.\n */\nexport async function listCreatorPosts(\n this: FanboxClient,\n params: ListCreatorPostsParams,\n): Promise<ListCreatorPostsResult> {\n return this.get(\"post.listCreator\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { Post } from \"../models/post.js\";\n\nexport interface GetPostParams {\n postId: string;\n}\n\nexport type GetPostResult = Post;\n\n/**\n * Get detailed information about a specific post.\n */\nexport async function getPost(\n this: FanboxClient,\n params: GetPostParams,\n): Promise<GetPostResult> {\n return this.get(\"post.info\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { PostListParams, PostSummary } from \"../models/post.js\";\n\nexport type ListHomePostsParams = PostListParams;\n\nexport type ListHomePostsResult = PostSummary[];\n\n/**\n * List all posts from the home feed from both following and supporting\n * creators. This endpoint is only available to logged-in users.\n */\nexport async function listHomePosts(\n this: FanboxClient,\n params: ListHomePostsParams = {},\n): Promise<ListHomePostsResult> {\n return this.get(\"post.listHome\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { PostListParams, PostSummary } from \"../models/post.js\";\n\nexport type ListSupportingPostsParams = PostListParams;\n\nexport type ListSupportingPostsResult = PostSummary[];\n\n/**\n * List all posts from the home feed from supporting creators only. This\n * endpoint is only available to logged-in users.\n */\nexport async function listSupportingPosts(\n this: FanboxClient,\n params: ListSupportingPostsParams = {},\n): Promise<ListSupportingPostsResult> {\n return this.get(\"post.listSupporting\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { CreatorSummary } from \"../models/creator.js\";\n\nexport interface ListFollowingCreatorsResult {\n creators: CreatorSummary[];\n}\n\n/**\n * List creators that the authenticated user is following.\n */\nexport async function listFollowingCreators(\n this: FanboxClient,\n): Promise<ListFollowingCreatorsResult> {\n return this.get(\"creator.listFollowing\");\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { SupportingPlan } from \"../models/plan.js\";\n\nexport type ListSupportingPlansResult = SupportingPlan[];\n\n/**\n * List plans that the authenticated user is supporting.\n */\nexport async function listSupportingPlans(\n this: FanboxClient,\n): Promise<ListSupportingPlansResult> {\n return this.get(\"plan.listSupporting\");\n}\n","import { Http2Transport, type HttpTransport } from \"../transport/http2.js\";\nimport { getCreator } from \"./endpoints/creator-get.js\";\nimport { paginateCreatorPosts } from \"./endpoints/creator-list-pages.js\";\nimport { listCreatorPlans } from \"./endpoints/creator-list-plans.js\";\nimport { listCreatorPosts } from \"./endpoints/creator-list-posts.js\";\nimport { getPost } from \"./endpoints/post-info.js\";\nimport { listHomePosts } from \"./endpoints/post-list-home.js\";\nimport { listSupportingPosts } from \"./endpoints/post-list-supporting.js\";\nimport { listFollowingCreators } from \"./endpoints/user-list-following.js\";\nimport { listSupportingPlans } from \"./endpoints/user-list-supporting.js\";\nimport type { FanboxEnvelope } from \"./fanbox-envelope.js\";\n\nconst DEFAULT_BASE_URL = \"https://api.fanbox.cc\";\n\nexport interface FanboxClientOptions {\n baseUrl?: string;\n headers?: Record<string, string>;\n transport?: HttpTransport;\n}\n\nexport class FanboxApiError extends Error {\n public readonly body: unknown;\n public readonly status: number;\n public readonly statusText: string;\n\n public constructor(response: Response, body: unknown) {\n super(\n `FANBOX API request failed: ${response.status} ${response.statusText}`,\n );\n this.name = \"FanboxApiError\";\n this.body = body;\n this.status = response.status;\n this.statusText = response.statusText;\n }\n}\n\nexport class FanboxClient {\n getCreator = getCreator;\n getPost = getPost;\n listCreatorPlans = listCreatorPlans;\n listCreatorPosts = listCreatorPosts;\n listFollowingCreators = listFollowingCreators;\n listHomePosts = listHomePosts;\n listSupportingPlans = listSupportingPlans;\n listSupportingPosts = listSupportingPosts;\n paginateCreatorPosts = paginateCreatorPosts;\n\n readonly #baseUrl: string;\n readonly #headers: Record<string, string>;\n readonly #transport: HttpTransport;\n\n public constructor(options: FanboxClientOptions = {}) {\n this.#baseUrl = options.baseUrl ?? DEFAULT_BASE_URL;\n this.#headers = options.headers ?? {};\n this.#transport = options.transport ?? new Http2Transport();\n }\n\n protected async get<T>(path: string, query: object = {}): Promise<T> {\n const url = new URL(\n path,\n this.#baseUrl.endsWith(\"/\") ? this.#baseUrl : `${this.#baseUrl}/`,\n );\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined) {\n url.searchParams.set(key, String(value));\n }\n }\n\n const request = new Request(url, { headers: this.#headers });\n const response = await this.#transport.fetch(request);\n const body = await parseJSONBody<FanboxEnvelope<T>>(response);\n if (!response.ok) {\n throw new FanboxApiError(response, body);\n }\n\n return body.body;\n }\n}\n\nasync function parseJSONBody<T>(response: Response): Promise<T> {\n const text = await response.text();\n try {\n return JSON.parse(text) as T;\n } catch {\n return text as unknown as T;\n }\n}\n"],"mappings":"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","names":["index_exports","__export","FanboxApiError","FanboxClient","__toCommonJS","import_node_http2","_sessions","Http2SessionManager","__privateAdd","sessions","__privateGet","closeHttp2Session","url","origin","existing","session","cleanup","resolve","HTTP2_HEADER_STATUS","Http2Error","message","_pool","Http2Transport","__privateAdd","Http2SessionManager","input","request","headers","attachHttp2Headers","stream","__privateGet","resolve","reject","settled","responseHeaders","createResponseHeaders","parseStatus","url","result","key","value","item","status","getCreator","params","paginateCreatorPosts","params","listCreatorPlans","params","listCreatorPosts","params","getPost","params","listHomePosts","params","listSupportingPosts","params","listFollowingCreators","listSupportingPlans","DEFAULT_BASE_URL","FanboxApiError","response","body","_baseUrl","_headers","_transport","FanboxClient","options","getCreator","getPost","listCreatorPlans","listCreatorPosts","listFollowingCreators","listHomePosts","listSupportingPlans","listSupportingPosts","paginateCreatorPosts","__privateAdd","__privateSet","Http2Transport","path","query","url","__privateGet","key","value","request","parseJSONBody","text"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/transport/http2-session.ts","../../src/transport/http2.ts","../../src/client/endpoints/creator-get.ts","../../src/client/endpoints/creator-list-pages.ts","../../src/client/endpoints/creator-list-plans.ts","../../src/client/endpoints/creator-list-posts.ts","../../src/client/endpoints/post-info.ts","../../src/client/endpoints/post-list-home.ts","../../src/client/endpoints/post-list-supporting.ts","../../src/client/endpoints/user-list-following.ts","../../src/client/endpoints/user-list-supporting.ts","../../src/client/client.ts"],"sourcesContent":["export { FanboxApiError, FanboxClient } from \"./client/client.js\";\nexport type * from \"./client/types.js\";\n","import { type ClientHttp2Session, connect } from \"node:http2\";\n\nexport interface Http2SessionManagerOptions {\n sessionsPerOrigin?: number;\n}\n\ninterface OriginSessionPool {\n nextIndex: number;\n sessions: ClientHttp2Session[];\n}\n\nexport class Http2SessionManager {\n readonly #pools = new Map<string, OriginSessionPool>();\n readonly #sessionsPerOrigin: number;\n\n constructor({ sessionsPerOrigin = 5 }: Http2SessionManagerOptions = {}) {\n this.#sessionsPerOrigin = Math.max(1, Math.floor(sessionsPerOrigin));\n }\n\n async closeAll(): Promise<void> {\n const sessions = [...this.#pools.values()].flatMap((pool) => pool.sessions);\n this.#pools.clear();\n await Promise.all(sessions.map(closeHttp2Session));\n }\n\n getSession(url: string): ClientHttp2Session {\n const origin = new URL(url).origin;\n const pool = this.#pools.get(origin) ?? this.#createPool(origin);\n\n if (pool.sessions.length < this.#sessionsPerOrigin) {\n const session = this.#createSession(origin);\n pool.sessions.push(session);\n return session;\n }\n\n const session = pool.sessions[pool.nextIndex % pool.sessions.length];\n pool.nextIndex = (pool.nextIndex + 1) % pool.sessions.length;\n\n return session;\n }\n\n #createPool(origin: string): OriginSessionPool {\n const pool = { nextIndex: 0, sessions: [] };\n this.#pools.set(origin, pool);\n return pool;\n }\n\n #createSession(origin: string) {\n const session = connect(origin);\n\n const cleanup = () => {\n const pool = this.#pools.get(origin);\n if (!pool) return;\n\n const index = pool.sessions.indexOf(session);\n if (index >= 0) {\n pool.sessions.splice(index, 1);\n pool.nextIndex = Math.min(pool.nextIndex, pool.sessions.length);\n }\n\n if (pool.sessions.length === 0) {\n this.#pools.delete(origin);\n }\n };\n session.once(\"close\", cleanup);\n session.once(\"error\", cleanup);\n\n return session;\n }\n}\n\nfunction closeHttp2Session(session: ClientHttp2Session): Promise<void> {\n if (session.closed || session.destroyed) {\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n session.close(resolve);\n });\n}\n","import {\n Http2SessionManager,\n type Http2SessionManagerOptions,\n} from \"./http2-session.js\";\n\nconst HTTP2_HEADER_STATUS = \":status\";\n\nexport interface HttpTransport {\n fetch(input: Request | string | URL): Promise<Response>;\n}\n\nexport class Http2Error extends Error {\n public constructor(message: string) {\n super(message);\n this.name = \"Http2Error\";\n }\n}\n\nexport class Http2Transport {\n readonly #pool: Http2SessionManager;\n\n constructor(options: Http2SessionManagerOptions = {}) {\n this.#pool = new Http2SessionManager(options);\n }\n\n fetch(input: Request | string | URL) {\n const request = input instanceof Request ? input : new Request(input);\n const headers = attachHttp2Headers(request);\n\n const session = this.#pool.getSession(request.url);\n const stream = session.request(headers, { endStream: !request.body });\n\n return new Promise<Response>((resolve, reject) => {\n let settled = false;\n stream.once(\"error\", reject);\n stream.once(\"close\", () => {\n if (!settled) {\n reject(new Http2Error(`HTTP/2 stream closed before response`));\n }\n });\n\n stream.once(\"response\", (responseHeaders) => {\n settled = true;\n resolve(\n new Response(stream, {\n headers: createResponseHeaders(responseHeaders),\n status: parseStatus(responseHeaders[HTTP2_HEADER_STATUS]),\n }),\n );\n });\n\n // If the request has a body, write it to the stream. If writing fails, destroy the stream to trigger error handling.\n if (request.body) stream.end(request.body);\n });\n }\n}\n\nfunction attachHttp2Headers(request: Request) {\n const url = new URL(request.url);\n const headers = { ...Object.fromEntries(request.headers) };\n\n headers[\":authority\"] = url.host;\n headers[\":method\"] = request.method.toUpperCase();\n headers[\":path\"] = `${url.pathname}${url.search}`;\n headers[\":scheme\"] = url.protocol.slice(0, -1);\n\n return headers;\n}\n\nfunction createResponseHeaders(\n headers: Record<string, string | string[] | undefined>,\n): Headers {\n const result = new Headers();\n for (const [key, value] of Object.entries(headers)) {\n if (\n // ignore HTTP/2 pseudo-headers in the response\n key.startsWith(\":\") ||\n value === undefined\n )\n continue;\n\n if (Array.isArray(value)) {\n for (const item of value) {\n result.append(key, item);\n }\n } else {\n result.set(key, value);\n }\n }\n\n return result;\n}\n\nfunction parseStatus(status: number | string | string[] | undefined): number {\n if (typeof status === \"number\") {\n return status;\n }\n if (Array.isArray(status)) {\n return Number(status[0] ?? 0);\n }\n\n return Number(status ?? 0);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { Creator } from \"../models/creator.js\";\n\nexport interface GetCreatorParams {\n creatorId: string;\n}\n\nexport type GetCreatorResult = Creator;\n\n/**\n * Get detailed information about a specific creator.\n */\nexport async function getCreator(\n this: FanboxClient,\n params: GetCreatorParams,\n): Promise<GetCreatorResult> {\n return this.get(\"creator.get\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { PostSort } from \"../models/post.js\";\n\nexport interface PaginateCreatorPostsParams {\n creatorId: string;\n sort?: PostSort;\n}\n\nexport type PaginateCreatorPostsResult = string[];\n\n/**\n * List all urls to the pages, which paginated by the given conditions.\n */\nexport async function paginateCreatorPosts(\n this: FanboxClient,\n params: PaginateCreatorPostsParams,\n): Promise<PaginateCreatorPostsResult> {\n return this.get(\"post.paginateCreator\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { Plan } from \"../models/plan.js\";\n\nexport interface ListCreatorPlansParams {\n creatorId: string;\n}\n\nexport type ListCreatorPlansResult = Plan[];\n\n/**\n * List plans for a specific creator.\n */\nexport async function listCreatorPlans(\n this: FanboxClient,\n params: ListCreatorPlansParams,\n): Promise<ListCreatorPlansResult> {\n return this.get(\"plan.listCreator\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { PostListParams, PostSort, PostSummary } from \"../models/post.js\";\n\nexport interface ListCreatorPostsParams extends PostListParams {\n creatorId: string;\n firstId?: string;\n firstPublishedDatetime?: string;\n sort?: PostSort;\n}\n\nexport type ListCreatorPostsResult = PostSummary[];\n\n/**\n * List posts for a specific creator.\n */\nexport async function listCreatorPosts(\n this: FanboxClient,\n params: ListCreatorPostsParams,\n): Promise<ListCreatorPostsResult> {\n return this.get(\"post.listCreator\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { Post } from \"../models/post.js\";\n\nexport interface GetPostParams {\n postId: string;\n}\n\nexport type GetPostResult = Post;\n\n/**\n * Get detailed information about a specific post.\n */\nexport async function getPost(\n this: FanboxClient,\n params: GetPostParams,\n): Promise<GetPostResult> {\n return this.get(\"post.info\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { PostListParams, PostSummary } from \"../models/post.js\";\n\nexport type ListHomePostsParams = PostListParams;\n\nexport type ListHomePostsResult = PostSummary[];\n\n/**\n * List all posts from the home feed from both following and supporting\n * creators. This endpoint is only available to logged-in users.\n */\nexport async function listHomePosts(\n this: FanboxClient,\n params: ListHomePostsParams = {},\n): Promise<ListHomePostsResult> {\n return this.get(\"post.listHome\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { PostListParams, PostSummary } from \"../models/post.js\";\n\nexport type ListSupportingPostsParams = PostListParams;\n\nexport type ListSupportingPostsResult = PostSummary[];\n\n/**\n * List all posts from the home feed from supporting creators only. This\n * endpoint is only available to logged-in users.\n */\nexport async function listSupportingPosts(\n this: FanboxClient,\n params: ListSupportingPostsParams = {},\n): Promise<ListSupportingPostsResult> {\n return this.get(\"post.listSupporting\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { CreatorSummary } from \"../models/creator.js\";\n\nexport interface ListFollowingCreatorsResult {\n creators: CreatorSummary[];\n}\n\n/**\n * List creators that the authenticated user is following.\n */\nexport async function listFollowingCreators(\n this: FanboxClient,\n): Promise<ListFollowingCreatorsResult> {\n return this.get(\"creator.listFollowing\");\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { SupportingPlan } from \"../models/plan.js\";\n\nexport type ListSupportingPlansResult = SupportingPlan[];\n\n/**\n * List plans that the authenticated user is supporting.\n */\nexport async function listSupportingPlans(\n this: FanboxClient,\n): Promise<ListSupportingPlansResult> {\n return this.get(\"plan.listSupporting\");\n}\n","import { Http2Transport, type HttpTransport } from \"../transport/http2.js\";\nimport { getCreator } from \"./endpoints/creator-get.js\";\nimport { paginateCreatorPosts } from \"./endpoints/creator-list-pages.js\";\nimport { listCreatorPlans } from \"./endpoints/creator-list-plans.js\";\nimport { listCreatorPosts } from \"./endpoints/creator-list-posts.js\";\nimport { getPost } from \"./endpoints/post-info.js\";\nimport { listHomePosts } from \"./endpoints/post-list-home.js\";\nimport { listSupportingPosts } from \"./endpoints/post-list-supporting.js\";\nimport { listFollowingCreators } from \"./endpoints/user-list-following.js\";\nimport { listSupportingPlans } from \"./endpoints/user-list-supporting.js\";\nimport type { FanboxEnvelope } from \"./fanbox-envelope.js\";\n\nconst DEFAULT_BASE_URL = \"https://api.fanbox.cc\";\n\nexport interface FanboxClientOptions {\n baseUrl?: string;\n headers?: Record<string, string>;\n transport?: HttpTransport;\n}\n\nexport class FanboxApiError extends Error {\n public readonly body: unknown;\n public readonly status: number;\n public readonly statusText: string;\n\n public constructor(response: Response, body: unknown) {\n super(\n `FANBOX API request failed: ${response.status} ${response.statusText}`,\n );\n this.name = \"FanboxApiError\";\n this.body = body;\n this.status = response.status;\n this.statusText = response.statusText;\n }\n}\n\nexport class FanboxClient {\n getCreator = getCreator;\n getPost = getPost;\n listCreatorPlans = listCreatorPlans;\n listCreatorPosts = listCreatorPosts;\n listFollowingCreators = listFollowingCreators;\n listHomePosts = listHomePosts;\n listSupportingPlans = listSupportingPlans;\n listSupportingPosts = listSupportingPosts;\n paginateCreatorPosts = paginateCreatorPosts;\n\n readonly #baseUrl: string;\n readonly #headers: Record<string, string>;\n readonly #transport: HttpTransport;\n\n public constructor(options: FanboxClientOptions = {}) {\n this.#baseUrl = options.baseUrl ?? DEFAULT_BASE_URL;\n this.#headers = options.headers ?? {};\n this.#transport = options.transport ?? new Http2Transport();\n }\n\n protected async get<T>(path: string, query: object = {}): Promise<T> {\n const url = new URL(\n path,\n this.#baseUrl.endsWith(\"/\") ? this.#baseUrl : `${this.#baseUrl}/`,\n );\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined) {\n url.searchParams.set(key, String(value));\n }\n }\n\n const request = new Request(url, { headers: this.#headers });\n const response = await this.#transport.fetch(request);\n const body = await parseJSONBody<FanboxEnvelope<T>>(response);\n if (!response.ok) {\n throw new FanboxApiError(response, body);\n }\n\n return body.body;\n }\n}\n\nasync function parseJSONBody<T>(response: Response): Promise<T> {\n const text = await response.text();\n try {\n return JSON.parse(text) as T;\n } catch {\n return text as unknown as T;\n }\n}\n"],"mappings":"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","names":["index_exports","__export","FanboxApiError","FanboxClient","__toCommonJS","import_node_http2","_pools","_sessionsPerOrigin","_Http2SessionManager_instances","createPool_fn","createSession_fn","Http2SessionManager","sessionsPerOrigin","__privateAdd","__privateSet","sessions","__privateGet","pool","closeHttp2Session","url","origin","__privateMethod","session","cleanup","index","resolve","HTTP2_HEADER_STATUS","Http2Error","message","_pool","Http2Transport","options","__privateAdd","__privateSet","Http2SessionManager","input","request","headers","attachHttp2Headers","stream","__privateGet","resolve","reject","settled","responseHeaders","createResponseHeaders","parseStatus","url","result","key","value","item","status","getCreator","params","paginateCreatorPosts","params","listCreatorPlans","params","listCreatorPosts","params","getPost","params","listHomePosts","params","listSupportingPosts","params","listFollowingCreators","listSupportingPlans","DEFAULT_BASE_URL","FanboxApiError","response","body","_baseUrl","_headers","_transport","FanboxClient","options","getCreator","getPost","listCreatorPlans","listCreatorPosts","listFollowingCreators","listHomePosts","listSupportingPlans","listSupportingPosts","paginateCreatorPosts","__privateAdd","__privateSet","Http2Transport","path","query","url","__privateGet","key","value","request","parseJSONBody","text"]}
@@ -1,2 +1,2 @@
1
- var R=t=>{throw TypeError(t)};var L=(t,e,s)=>e.has(t)||R("Cannot "+s);var o=(t,e,s)=>(L(t,e,"read from private field"),s?s.call(t):e.get(t)),p=(t,e,s)=>e.has(t)?R("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,s),g=(t,e,s,r)=>(L(t,e,"write to private field"),r?r.call(t,s):e.set(t,s),s);import{connect as q}from"http2";var a,y=class{constructor(){p(this,a,new Map)}async closeAll(){let e=[...o(this,a).values()];o(this,a).clear(),await Promise.all(e.map(G))}getSession(e){let s=new URL(e).origin,r=o(this,a).get(s);if(r&&!r.closed&&!r.destroyed)return r;let i=q(s);o(this,a).set(s,i);let n=()=>{o(this,a).get(s)===i&&o(this,a).delete(s)};return i.once("close",n),i.once("error",n),i}};a=new WeakMap;function G(t){return t.closed||t.destroyed?Promise.resolve():new Promise(e=>{t.close(e)})}var O=":status",C=class extends Error{constructor(e){super(e),this.name="Http2Error"}},x,d=class{constructor(){p(this,x,new y)}fetch(e){let s=e instanceof Request?e:new Request(e),r=I(s),n=o(this,x).getSession(s.url).request(r,{endStream:!s.body});return new Promise((P,f)=>{let m=!1;n.once("error",f),n.once("close",()=>{m||f(new C("HTTP/2 stream closed before response"))}),n.once("response",S=>{m=!0,P(new Response(n,{headers:k(S),status:N(S[O])}))}),s.body&&n.end(s.body)})}};x=new WeakMap;function I(t){let e=new URL(t.url),s={...Object.fromEntries(t.headers)};return s[":authority"]=e.host,s[":method"]=t.method.toUpperCase(),s[":path"]=`${e.pathname}${e.search}`,s[":scheme"]=e.protocol.slice(0,-1),s}function k(t){let e=new Headers;for(let[s,r]of Object.entries(t))if(!(s.startsWith(":")||r===void 0))if(Array.isArray(r))for(let i of r)e.append(s,i);else e.set(s,r);return e}function N(t){return typeof t=="number"?t:Array.isArray(t)?Number(t[0]??0):Number(t??0)}async function F(t){return this.get("creator.get",t)}async function w(t){return this.get("post.paginateCreator",t)}async function H(t){return this.get("plan.listCreator",t)}async function j(t){return this.get("post.listCreator",t)}async function T(t){return this.get("post.info",t)}async function A(t={}){return this.get("post.listHome",t)}async function U(t={}){return this.get("post.listSupporting",t)}async function E(){return this.get("creator.listFollowing")}async function v(){return this.get("plan.listSupporting")}var $="https://api.fanbox.cc",h=class extends Error{constructor(e,s){super(`FANBOX API request failed: ${e.status} ${e.statusText}`),this.name="FanboxApiError",this.body=s,this.status=e.status,this.statusText=e.statusText}},l,c,u,b=class{constructor(e={}){this.getCreator=F;this.getPost=T;this.listCreatorPlans=H;this.listCreatorPosts=j;this.listFollowingCreators=E;this.listHomePosts=A;this.listSupportingPlans=v;this.listSupportingPosts=U;this.paginateCreatorPosts=w;p(this,l);p(this,c);p(this,u);g(this,l,e.baseUrl??$),g(this,c,e.headers??{}),g(this,u,e.transport??new d)}async get(e,s={}){let r=new URL(e,o(this,l).endsWith("/")?o(this,l):`${o(this,l)}/`);for(let[f,m]of Object.entries(s))m!==void 0&&r.searchParams.set(f,String(m));let i=new Request(r,{headers:o(this,c)}),n=await o(this,u).fetch(i),P=await _(n);if(!n.ok)throw new h(n,P);return P.body}};l=new WeakMap,c=new WeakMap,u=new WeakMap;async function _(t){let e=await t.text();try{return JSON.parse(e)}catch{return e}}export{h as FanboxApiError,b as FanboxClient};
1
+ var w=s=>{throw TypeError(s)};var S=(s,t,e)=>t.has(s)||w("Cannot "+e);var r=(s,t,e)=>(S(s,t,"read from private field"),e?e.call(s):t.get(s)),a=(s,t,e)=>t.has(s)?w("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(s):t.set(s,e),l=(s,t,e,o)=>(S(s,t,"write to private field"),o?o.call(s,e):t.set(s,e),e),R=(s,t,e)=>(S(s,t,"access private method"),e);import{connect as k}from"http2";var p,P,c,j,T,h=class{constructor({sessionsPerOrigin:t=5}={}){a(this,c);a(this,p,new Map);a(this,P);l(this,P,Math.max(1,Math.floor(t)))}async closeAll(){let t=[...r(this,p).values()].flatMap(e=>e.sessions);r(this,p).clear(),await Promise.all(t.map(N))}getSession(t){let e=new URL(t).origin,o=r(this,p).get(e)??R(this,c,j).call(this,e);if(o.sessions.length<r(this,P)){let n=R(this,c,T).call(this,e);return o.sessions.push(n),n}let i=o.sessions[o.nextIndex%o.sessions.length];return o.nextIndex=(o.nextIndex+1)%o.sessions.length,i}};p=new WeakMap,P=new WeakMap,c=new WeakSet,j=function(t){let e={nextIndex:0,sessions:[]};return r(this,p).set(t,e),e},T=function(t){let e=k(t),o=()=>{let i=r(this,p).get(t);if(!i)return;let n=i.sessions.indexOf(e);n>=0&&(i.sessions.splice(n,1),i.nextIndex=Math.min(i.nextIndex,i.sessions.length)),i.sessions.length===0&&r(this,p).delete(t)};return e.once("close",o),e.once("error",o),e};function N(s){return s.closed||s.destroyed?Promise.resolve():new Promise(t=>{s.close(t)})}var $=":status",L=class extends Error{constructor(t){super(t),this.name="Http2Error"}},f,C=class{constructor(t={}){a(this,f);l(this,f,new h(t))}fetch(t){let e=t instanceof Request?t:new Request(t),o=_(e),n=r(this,f).getSession(e.url).request(o,{endStream:!e.body});return new Promise((d,y)=>{let u=!1;n.once("error",y),n.once("close",()=>{u||y(new L("HTTP/2 stream closed before response"))}),n.once("response",H=>{u=!0,d(new Response(n,{headers:B(H),status:D(H[$])}))}),e.body&&n.end(e.body)})}};f=new WeakMap;function _(s){let t=new URL(s.url),e={...Object.fromEntries(s.headers)};return e[":authority"]=t.host,e[":method"]=s.method.toUpperCase(),e[":path"]=`${t.pathname}${t.search}`,e[":scheme"]=t.protocol.slice(0,-1),e}function B(s){let t=new Headers;for(let[e,o]of Object.entries(s))if(!(e.startsWith(":")||o===void 0))if(Array.isArray(o))for(let i of o)t.append(e,i);else t.set(e,o);return t}function D(s){return typeof s=="number"?s:Array.isArray(s)?Number(s[0]??0):Number(s??0)}async function O(s){return this.get("creator.get",s)}async function I(s){return this.get("post.paginateCreator",s)}async function A(s){return this.get("plan.listCreator",s)}async function U(s){return this.get("post.listCreator",s)}async function E(s){return this.get("post.info",s)}async function M(s={}){return this.get("post.listHome",s)}async function v(s={}){return this.get("post.listSupporting",s)}async function q(){return this.get("creator.listFollowing")}async function G(){return this.get("plan.listSupporting")}var J="https://api.fanbox.cc",b=class extends Error{constructor(t,e){super(`FANBOX API request failed: ${t.status} ${t.statusText}`),this.name="FanboxApiError",this.body=e,this.status=t.status,this.statusText=t.statusText}},m,g,x,F=class{constructor(t={}){this.getCreator=O;this.getPost=E;this.listCreatorPlans=A;this.listCreatorPosts=U;this.listFollowingCreators=q;this.listHomePosts=M;this.listSupportingPlans=G;this.listSupportingPosts=v;this.paginateCreatorPosts=I;a(this,m);a(this,g);a(this,x);l(this,m,t.baseUrl??J),l(this,g,t.headers??{}),l(this,x,t.transport??new C)}async get(t,e={}){let o=new URL(t,r(this,m).endsWith("/")?r(this,m):`${r(this,m)}/`);for(let[y,u]of Object.entries(e))u!==void 0&&o.searchParams.set(y,String(u));let i=new Request(o,{headers:r(this,g)}),n=await r(this,x).fetch(i),d=await W(n);if(!n.ok)throw new b(n,d);return d.body}};m=new WeakMap,g=new WeakMap,x=new WeakMap;async function W(s){let t=await s.text();try{return JSON.parse(t)}catch{return t}}export{b as FanboxApiError,F as FanboxClient};
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/transport/http2-session.ts","../../src/transport/http2.ts","../../src/client/endpoints/creator-get.ts","../../src/client/endpoints/creator-list-pages.ts","../../src/client/endpoints/creator-list-plans.ts","../../src/client/endpoints/creator-list-posts.ts","../../src/client/endpoints/post-info.ts","../../src/client/endpoints/post-list-home.ts","../../src/client/endpoints/post-list-supporting.ts","../../src/client/endpoints/user-list-following.ts","../../src/client/endpoints/user-list-supporting.ts","../../src/client/client.ts"],"sourcesContent":["import { type ClientHttp2Session, connect } from \"node:http2\";\n\nexport class Http2SessionManager {\n readonly #sessions = new Map<string, ClientHttp2Session>();\n\n async closeAll(): Promise<void> {\n const sessions = [...this.#sessions.values()];\n this.#sessions.clear();\n await Promise.all(sessions.map(closeHttp2Session));\n }\n\n getSession(url: string): ClientHttp2Session {\n const origin = new URL(url).origin;\n const existing = this.#sessions.get(origin);\n if (existing && !existing.closed && !existing.destroyed) {\n return existing;\n }\n\n // Create a new HTTP/2 session for the origin\n const session = connect(origin);\n this.#sessions.set(origin, session);\n\n const cleanup = () => {\n if (this.#sessions.get(origin) === session) {\n this.#sessions.delete(origin);\n }\n };\n session.once(\"close\", cleanup);\n session.once(\"error\", cleanup);\n\n return session;\n }\n}\n\nfunction closeHttp2Session(session: ClientHttp2Session): Promise<void> {\n if (session.closed || session.destroyed) {\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n session.close(resolve);\n });\n}\n","import { Http2SessionManager } from \"./http2-session.js\";\n\nconst HTTP2_HEADER_STATUS = \":status\";\n\nexport interface HttpTransport {\n fetch(input: Request | string | URL): Promise<Response>;\n}\n\nexport class Http2Error extends Error {\n public constructor(message: string) {\n super(message);\n this.name = \"Http2Error\";\n }\n}\n\nexport class Http2Transport {\n readonly #pool = new Http2SessionManager();\n\n fetch(input: Request | string | URL) {\n const request = input instanceof Request ? input : new Request(input);\n const headers = attachHttp2Headers(request);\n\n const session = this.#pool.getSession(request.url);\n const stream = session.request(headers, { endStream: !request.body });\n\n return new Promise<Response>((resolve, reject) => {\n let settled = false;\n stream.once(\"error\", reject);\n stream.once(\"close\", () => {\n if (!settled) {\n reject(new Http2Error(`HTTP/2 stream closed before response`));\n }\n });\n\n stream.once(\"response\", (responseHeaders) => {\n settled = true;\n resolve(\n new Response(stream, {\n headers: createResponseHeaders(responseHeaders),\n status: parseStatus(responseHeaders[HTTP2_HEADER_STATUS]),\n }),\n );\n });\n\n // If the request has a body, write it to the stream. If writing fails, destroy the stream to trigger error handling.\n if (request.body) stream.end(request.body);\n });\n }\n}\n\nfunction attachHttp2Headers(request: Request) {\n const url = new URL(request.url);\n const headers = { ...Object.fromEntries(request.headers) };\n\n headers[\":authority\"] = url.host;\n headers[\":method\"] = request.method.toUpperCase();\n headers[\":path\"] = `${url.pathname}${url.search}`;\n headers[\":scheme\"] = url.protocol.slice(0, -1);\n\n return headers;\n}\n\nfunction createResponseHeaders(\n headers: Record<string, string | string[] | undefined>,\n): Headers {\n const result = new Headers();\n for (const [key, value] of Object.entries(headers)) {\n if (\n // ignore HTTP/2 pseudo-headers in the response\n key.startsWith(\":\") ||\n value === undefined\n )\n continue;\n\n if (Array.isArray(value)) {\n for (const item of value) {\n result.append(key, item);\n }\n } else {\n result.set(key, value);\n }\n }\n\n return result;\n}\n\nfunction parseStatus(status: number | string | string[] | undefined): number {\n if (typeof status === \"number\") {\n return status;\n }\n if (Array.isArray(status)) {\n return Number(status[0] ?? 0);\n }\n\n return Number(status ?? 0);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { Creator } from \"../models/creator.js\";\n\nexport interface GetCreatorParams {\n creatorId: string;\n}\n\nexport type GetCreatorResult = Creator;\n\n/**\n * Get detailed information about a specific creator.\n */\nexport async function getCreator(\n this: FanboxClient,\n params: GetCreatorParams,\n): Promise<GetCreatorResult> {\n return this.get(\"creator.get\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { PostSort } from \"../models/post.js\";\n\nexport interface PaginateCreatorPostsParams {\n creatorId: string;\n sort?: PostSort;\n}\n\nexport type PaginateCreatorPostsResult = string[];\n\n/**\n * List all urls to the pages, which paginated by the given conditions.\n */\nexport async function paginateCreatorPosts(\n this: FanboxClient,\n params: PaginateCreatorPostsParams,\n): Promise<PaginateCreatorPostsResult> {\n return this.get(\"post.paginateCreator\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { Plan } from \"../models/plan.js\";\n\nexport interface ListCreatorPlansParams {\n creatorId: string;\n}\n\nexport type ListCreatorPlansResult = Plan[];\n\n/**\n * List plans for a specific creator.\n */\nexport async function listCreatorPlans(\n this: FanboxClient,\n params: ListCreatorPlansParams,\n): Promise<ListCreatorPlansResult> {\n return this.get(\"plan.listCreator\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { PostListParams, PostSort, PostSummary } from \"../models/post.js\";\n\nexport interface ListCreatorPostsParams extends PostListParams {\n creatorId: string;\n firstId?: string;\n firstPublishedDatetime?: string;\n sort?: PostSort;\n}\n\nexport type ListCreatorPostsResult = PostSummary[];\n\n/**\n * List posts for a specific creator.\n */\nexport async function listCreatorPosts(\n this: FanboxClient,\n params: ListCreatorPostsParams,\n): Promise<ListCreatorPostsResult> {\n return this.get(\"post.listCreator\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { Post } from \"../models/post.js\";\n\nexport interface GetPostParams {\n postId: string;\n}\n\nexport type GetPostResult = Post;\n\n/**\n * Get detailed information about a specific post.\n */\nexport async function getPost(\n this: FanboxClient,\n params: GetPostParams,\n): Promise<GetPostResult> {\n return this.get(\"post.info\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { PostListParams, PostSummary } from \"../models/post.js\";\n\nexport type ListHomePostsParams = PostListParams;\n\nexport type ListHomePostsResult = PostSummary[];\n\n/**\n * List all posts from the home feed from both following and supporting\n * creators. This endpoint is only available to logged-in users.\n */\nexport async function listHomePosts(\n this: FanboxClient,\n params: ListHomePostsParams = {},\n): Promise<ListHomePostsResult> {\n return this.get(\"post.listHome\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { PostListParams, PostSummary } from \"../models/post.js\";\n\nexport type ListSupportingPostsParams = PostListParams;\n\nexport type ListSupportingPostsResult = PostSummary[];\n\n/**\n * List all posts from the home feed from supporting creators only. This\n * endpoint is only available to logged-in users.\n */\nexport async function listSupportingPosts(\n this: FanboxClient,\n params: ListSupportingPostsParams = {},\n): Promise<ListSupportingPostsResult> {\n return this.get(\"post.listSupporting\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { CreatorSummary } from \"../models/creator.js\";\n\nexport interface ListFollowingCreatorsResult {\n creators: CreatorSummary[];\n}\n\n/**\n * List creators that the authenticated user is following.\n */\nexport async function listFollowingCreators(\n this: FanboxClient,\n): Promise<ListFollowingCreatorsResult> {\n return this.get(\"creator.listFollowing\");\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { SupportingPlan } from \"../models/plan.js\";\n\nexport type ListSupportingPlansResult = SupportingPlan[];\n\n/**\n * List plans that the authenticated user is supporting.\n */\nexport async function listSupportingPlans(\n this: FanboxClient,\n): Promise<ListSupportingPlansResult> {\n return this.get(\"plan.listSupporting\");\n}\n","import { Http2Transport, type HttpTransport } from \"../transport/http2.js\";\nimport { getCreator } from \"./endpoints/creator-get.js\";\nimport { paginateCreatorPosts } from \"./endpoints/creator-list-pages.js\";\nimport { listCreatorPlans } from \"./endpoints/creator-list-plans.js\";\nimport { listCreatorPosts } from \"./endpoints/creator-list-posts.js\";\nimport { getPost } from \"./endpoints/post-info.js\";\nimport { listHomePosts } from \"./endpoints/post-list-home.js\";\nimport { listSupportingPosts } from \"./endpoints/post-list-supporting.js\";\nimport { listFollowingCreators } from \"./endpoints/user-list-following.js\";\nimport { listSupportingPlans } from \"./endpoints/user-list-supporting.js\";\nimport type { FanboxEnvelope } from \"./fanbox-envelope.js\";\n\nconst DEFAULT_BASE_URL = \"https://api.fanbox.cc\";\n\nexport interface FanboxClientOptions {\n baseUrl?: string;\n headers?: Record<string, string>;\n transport?: HttpTransport;\n}\n\nexport class FanboxApiError extends Error {\n public readonly body: unknown;\n public readonly status: number;\n public readonly statusText: string;\n\n public constructor(response: Response, body: unknown) {\n super(\n `FANBOX API request failed: ${response.status} ${response.statusText}`,\n );\n this.name = \"FanboxApiError\";\n this.body = body;\n this.status = response.status;\n this.statusText = response.statusText;\n }\n}\n\nexport class FanboxClient {\n getCreator = getCreator;\n getPost = getPost;\n listCreatorPlans = listCreatorPlans;\n listCreatorPosts = listCreatorPosts;\n listFollowingCreators = listFollowingCreators;\n listHomePosts = listHomePosts;\n listSupportingPlans = listSupportingPlans;\n listSupportingPosts = listSupportingPosts;\n paginateCreatorPosts = paginateCreatorPosts;\n\n readonly #baseUrl: string;\n readonly #headers: Record<string, string>;\n readonly #transport: HttpTransport;\n\n public constructor(options: FanboxClientOptions = {}) {\n this.#baseUrl = options.baseUrl ?? DEFAULT_BASE_URL;\n this.#headers = options.headers ?? {};\n this.#transport = options.transport ?? new Http2Transport();\n }\n\n protected async get<T>(path: string, query: object = {}): Promise<T> {\n const url = new URL(\n path,\n this.#baseUrl.endsWith(\"/\") ? this.#baseUrl : `${this.#baseUrl}/`,\n );\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined) {\n url.searchParams.set(key, String(value));\n }\n }\n\n const request = new Request(url, { headers: this.#headers });\n const response = await this.#transport.fetch(request);\n const body = await parseJSONBody<FanboxEnvelope<T>>(response);\n if (!response.ok) {\n throw new FanboxApiError(response, body);\n }\n\n return body.body;\n }\n}\n\nasync function parseJSONBody<T>(response: Response): Promise<T> {\n const text = await response.text();\n try {\n return JSON.parse(text) as T;\n } catch {\n return text as unknown as T;\n }\n}\n"],"mappings":"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","names":["connect","_sessions","Http2SessionManager","__privateAdd","sessions","__privateGet","closeHttp2Session","url","origin","existing","session","connect","cleanup","resolve","HTTP2_HEADER_STATUS","Http2Error","message","_pool","Http2Transport","__privateAdd","Http2SessionManager","input","request","headers","attachHttp2Headers","stream","__privateGet","resolve","reject","settled","responseHeaders","createResponseHeaders","parseStatus","url","result","key","value","item","status","getCreator","params","paginateCreatorPosts","params","listCreatorPlans","params","listCreatorPosts","params","getPost","params","listHomePosts","params","listSupportingPosts","params","listFollowingCreators","listSupportingPlans","DEFAULT_BASE_URL","FanboxApiError","response","body","_baseUrl","_headers","_transport","FanboxClient","options","getCreator","getPost","listCreatorPlans","listCreatorPosts","listFollowingCreators","listHomePosts","listSupportingPlans","listSupportingPosts","paginateCreatorPosts","__privateAdd","__privateSet","Http2Transport","path","query","url","__privateGet","key","value","request","parseJSONBody","text"]}
1
+ {"version":3,"sources":["../../src/transport/http2-session.ts","../../src/transport/http2.ts","../../src/client/endpoints/creator-get.ts","../../src/client/endpoints/creator-list-pages.ts","../../src/client/endpoints/creator-list-plans.ts","../../src/client/endpoints/creator-list-posts.ts","../../src/client/endpoints/post-info.ts","../../src/client/endpoints/post-list-home.ts","../../src/client/endpoints/post-list-supporting.ts","../../src/client/endpoints/user-list-following.ts","../../src/client/endpoints/user-list-supporting.ts","../../src/client/client.ts"],"sourcesContent":["import { type ClientHttp2Session, connect } from \"node:http2\";\n\nexport interface Http2SessionManagerOptions {\n sessionsPerOrigin?: number;\n}\n\ninterface OriginSessionPool {\n nextIndex: number;\n sessions: ClientHttp2Session[];\n}\n\nexport class Http2SessionManager {\n readonly #pools = new Map<string, OriginSessionPool>();\n readonly #sessionsPerOrigin: number;\n\n constructor({ sessionsPerOrigin = 5 }: Http2SessionManagerOptions = {}) {\n this.#sessionsPerOrigin = Math.max(1, Math.floor(sessionsPerOrigin));\n }\n\n async closeAll(): Promise<void> {\n const sessions = [...this.#pools.values()].flatMap((pool) => pool.sessions);\n this.#pools.clear();\n await Promise.all(sessions.map(closeHttp2Session));\n }\n\n getSession(url: string): ClientHttp2Session {\n const origin = new URL(url).origin;\n const pool = this.#pools.get(origin) ?? this.#createPool(origin);\n\n if (pool.sessions.length < this.#sessionsPerOrigin) {\n const session = this.#createSession(origin);\n pool.sessions.push(session);\n return session;\n }\n\n const session = pool.sessions[pool.nextIndex % pool.sessions.length];\n pool.nextIndex = (pool.nextIndex + 1) % pool.sessions.length;\n\n return session;\n }\n\n #createPool(origin: string): OriginSessionPool {\n const pool = { nextIndex: 0, sessions: [] };\n this.#pools.set(origin, pool);\n return pool;\n }\n\n #createSession(origin: string) {\n const session = connect(origin);\n\n const cleanup = () => {\n const pool = this.#pools.get(origin);\n if (!pool) return;\n\n const index = pool.sessions.indexOf(session);\n if (index >= 0) {\n pool.sessions.splice(index, 1);\n pool.nextIndex = Math.min(pool.nextIndex, pool.sessions.length);\n }\n\n if (pool.sessions.length === 0) {\n this.#pools.delete(origin);\n }\n };\n session.once(\"close\", cleanup);\n session.once(\"error\", cleanup);\n\n return session;\n }\n}\n\nfunction closeHttp2Session(session: ClientHttp2Session): Promise<void> {\n if (session.closed || session.destroyed) {\n return Promise.resolve();\n }\n\n return new Promise((resolve) => {\n session.close(resolve);\n });\n}\n","import {\n Http2SessionManager,\n type Http2SessionManagerOptions,\n} from \"./http2-session.js\";\n\nconst HTTP2_HEADER_STATUS = \":status\";\n\nexport interface HttpTransport {\n fetch(input: Request | string | URL): Promise<Response>;\n}\n\nexport class Http2Error extends Error {\n public constructor(message: string) {\n super(message);\n this.name = \"Http2Error\";\n }\n}\n\nexport class Http2Transport {\n readonly #pool: Http2SessionManager;\n\n constructor(options: Http2SessionManagerOptions = {}) {\n this.#pool = new Http2SessionManager(options);\n }\n\n fetch(input: Request | string | URL) {\n const request = input instanceof Request ? input : new Request(input);\n const headers = attachHttp2Headers(request);\n\n const session = this.#pool.getSession(request.url);\n const stream = session.request(headers, { endStream: !request.body });\n\n return new Promise<Response>((resolve, reject) => {\n let settled = false;\n stream.once(\"error\", reject);\n stream.once(\"close\", () => {\n if (!settled) {\n reject(new Http2Error(`HTTP/2 stream closed before response`));\n }\n });\n\n stream.once(\"response\", (responseHeaders) => {\n settled = true;\n resolve(\n new Response(stream, {\n headers: createResponseHeaders(responseHeaders),\n status: parseStatus(responseHeaders[HTTP2_HEADER_STATUS]),\n }),\n );\n });\n\n // If the request has a body, write it to the stream. If writing fails, destroy the stream to trigger error handling.\n if (request.body) stream.end(request.body);\n });\n }\n}\n\nfunction attachHttp2Headers(request: Request) {\n const url = new URL(request.url);\n const headers = { ...Object.fromEntries(request.headers) };\n\n headers[\":authority\"] = url.host;\n headers[\":method\"] = request.method.toUpperCase();\n headers[\":path\"] = `${url.pathname}${url.search}`;\n headers[\":scheme\"] = url.protocol.slice(0, -1);\n\n return headers;\n}\n\nfunction createResponseHeaders(\n headers: Record<string, string | string[] | undefined>,\n): Headers {\n const result = new Headers();\n for (const [key, value] of Object.entries(headers)) {\n if (\n // ignore HTTP/2 pseudo-headers in the response\n key.startsWith(\":\") ||\n value === undefined\n )\n continue;\n\n if (Array.isArray(value)) {\n for (const item of value) {\n result.append(key, item);\n }\n } else {\n result.set(key, value);\n }\n }\n\n return result;\n}\n\nfunction parseStatus(status: number | string | string[] | undefined): number {\n if (typeof status === \"number\") {\n return status;\n }\n if (Array.isArray(status)) {\n return Number(status[0] ?? 0);\n }\n\n return Number(status ?? 0);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { Creator } from \"../models/creator.js\";\n\nexport interface GetCreatorParams {\n creatorId: string;\n}\n\nexport type GetCreatorResult = Creator;\n\n/**\n * Get detailed information about a specific creator.\n */\nexport async function getCreator(\n this: FanboxClient,\n params: GetCreatorParams,\n): Promise<GetCreatorResult> {\n return this.get(\"creator.get\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { PostSort } from \"../models/post.js\";\n\nexport interface PaginateCreatorPostsParams {\n creatorId: string;\n sort?: PostSort;\n}\n\nexport type PaginateCreatorPostsResult = string[];\n\n/**\n * List all urls to the pages, which paginated by the given conditions.\n */\nexport async function paginateCreatorPosts(\n this: FanboxClient,\n params: PaginateCreatorPostsParams,\n): Promise<PaginateCreatorPostsResult> {\n return this.get(\"post.paginateCreator\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { Plan } from \"../models/plan.js\";\n\nexport interface ListCreatorPlansParams {\n creatorId: string;\n}\n\nexport type ListCreatorPlansResult = Plan[];\n\n/**\n * List plans for a specific creator.\n */\nexport async function listCreatorPlans(\n this: FanboxClient,\n params: ListCreatorPlansParams,\n): Promise<ListCreatorPlansResult> {\n return this.get(\"plan.listCreator\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { PostListParams, PostSort, PostSummary } from \"../models/post.js\";\n\nexport interface ListCreatorPostsParams extends PostListParams {\n creatorId: string;\n firstId?: string;\n firstPublishedDatetime?: string;\n sort?: PostSort;\n}\n\nexport type ListCreatorPostsResult = PostSummary[];\n\n/**\n * List posts for a specific creator.\n */\nexport async function listCreatorPosts(\n this: FanboxClient,\n params: ListCreatorPostsParams,\n): Promise<ListCreatorPostsResult> {\n return this.get(\"post.listCreator\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { Post } from \"../models/post.js\";\n\nexport interface GetPostParams {\n postId: string;\n}\n\nexport type GetPostResult = Post;\n\n/**\n * Get detailed information about a specific post.\n */\nexport async function getPost(\n this: FanboxClient,\n params: GetPostParams,\n): Promise<GetPostResult> {\n return this.get(\"post.info\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { PostListParams, PostSummary } from \"../models/post.js\";\n\nexport type ListHomePostsParams = PostListParams;\n\nexport type ListHomePostsResult = PostSummary[];\n\n/**\n * List all posts from the home feed from both following and supporting\n * creators. This endpoint is only available to logged-in users.\n */\nexport async function listHomePosts(\n this: FanboxClient,\n params: ListHomePostsParams = {},\n): Promise<ListHomePostsResult> {\n return this.get(\"post.listHome\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { PostListParams, PostSummary } from \"../models/post.js\";\n\nexport type ListSupportingPostsParams = PostListParams;\n\nexport type ListSupportingPostsResult = PostSummary[];\n\n/**\n * List all posts from the home feed from supporting creators only. This\n * endpoint is only available to logged-in users.\n */\nexport async function listSupportingPosts(\n this: FanboxClient,\n params: ListSupportingPostsParams = {},\n): Promise<ListSupportingPostsResult> {\n return this.get(\"post.listSupporting\", params);\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { CreatorSummary } from \"../models/creator.js\";\n\nexport interface ListFollowingCreatorsResult {\n creators: CreatorSummary[];\n}\n\n/**\n * List creators that the authenticated user is following.\n */\nexport async function listFollowingCreators(\n this: FanboxClient,\n): Promise<ListFollowingCreatorsResult> {\n return this.get(\"creator.listFollowing\");\n}\n","import type { FanboxClient } from \"../client.js\";\nimport type { SupportingPlan } from \"../models/plan.js\";\n\nexport type ListSupportingPlansResult = SupportingPlan[];\n\n/**\n * List plans that the authenticated user is supporting.\n */\nexport async function listSupportingPlans(\n this: FanboxClient,\n): Promise<ListSupportingPlansResult> {\n return this.get(\"plan.listSupporting\");\n}\n","import { Http2Transport, type HttpTransport } from \"../transport/http2.js\";\nimport { getCreator } from \"./endpoints/creator-get.js\";\nimport { paginateCreatorPosts } from \"./endpoints/creator-list-pages.js\";\nimport { listCreatorPlans } from \"./endpoints/creator-list-plans.js\";\nimport { listCreatorPosts } from \"./endpoints/creator-list-posts.js\";\nimport { getPost } from \"./endpoints/post-info.js\";\nimport { listHomePosts } from \"./endpoints/post-list-home.js\";\nimport { listSupportingPosts } from \"./endpoints/post-list-supporting.js\";\nimport { listFollowingCreators } from \"./endpoints/user-list-following.js\";\nimport { listSupportingPlans } from \"./endpoints/user-list-supporting.js\";\nimport type { FanboxEnvelope } from \"./fanbox-envelope.js\";\n\nconst DEFAULT_BASE_URL = \"https://api.fanbox.cc\";\n\nexport interface FanboxClientOptions {\n baseUrl?: string;\n headers?: Record<string, string>;\n transport?: HttpTransport;\n}\n\nexport class FanboxApiError extends Error {\n public readonly body: unknown;\n public readonly status: number;\n public readonly statusText: string;\n\n public constructor(response: Response, body: unknown) {\n super(\n `FANBOX API request failed: ${response.status} ${response.statusText}`,\n );\n this.name = \"FanboxApiError\";\n this.body = body;\n this.status = response.status;\n this.statusText = response.statusText;\n }\n}\n\nexport class FanboxClient {\n getCreator = getCreator;\n getPost = getPost;\n listCreatorPlans = listCreatorPlans;\n listCreatorPosts = listCreatorPosts;\n listFollowingCreators = listFollowingCreators;\n listHomePosts = listHomePosts;\n listSupportingPlans = listSupportingPlans;\n listSupportingPosts = listSupportingPosts;\n paginateCreatorPosts = paginateCreatorPosts;\n\n readonly #baseUrl: string;\n readonly #headers: Record<string, string>;\n readonly #transport: HttpTransport;\n\n public constructor(options: FanboxClientOptions = {}) {\n this.#baseUrl = options.baseUrl ?? DEFAULT_BASE_URL;\n this.#headers = options.headers ?? {};\n this.#transport = options.transport ?? new Http2Transport();\n }\n\n protected async get<T>(path: string, query: object = {}): Promise<T> {\n const url = new URL(\n path,\n this.#baseUrl.endsWith(\"/\") ? this.#baseUrl : `${this.#baseUrl}/`,\n );\n for (const [key, value] of Object.entries(query)) {\n if (value !== undefined) {\n url.searchParams.set(key, String(value));\n }\n }\n\n const request = new Request(url, { headers: this.#headers });\n const response = await this.#transport.fetch(request);\n const body = await parseJSONBody<FanboxEnvelope<T>>(response);\n if (!response.ok) {\n throw new FanboxApiError(response, body);\n }\n\n return body.body;\n }\n}\n\nasync function parseJSONBody<T>(response: Response): Promise<T> {\n const text = await response.text();\n try {\n return JSON.parse(text) as T;\n } catch {\n return text as unknown as T;\n }\n}\n"],"mappings":"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","names":["connect","_pools","_sessionsPerOrigin","_Http2SessionManager_instances","createPool_fn","createSession_fn","Http2SessionManager","sessionsPerOrigin","__privateAdd","__privateSet","sessions","__privateGet","pool","closeHttp2Session","url","origin","__privateMethod","session","connect","cleanup","index","resolve","HTTP2_HEADER_STATUS","Http2Error","message","_pool","Http2Transport","options","__privateAdd","__privateSet","Http2SessionManager","input","request","headers","attachHttp2Headers","stream","__privateGet","resolve","reject","settled","responseHeaders","createResponseHeaders","parseStatus","url","result","key","value","item","status","getCreator","params","paginateCreatorPosts","params","listCreatorPlans","params","listCreatorPosts","params","getPost","params","listHomePosts","params","listSupportingPosts","params","listFollowingCreators","listSupportingPlans","DEFAULT_BASE_URL","FanboxApiError","response","body","_baseUrl","_headers","_transport","FanboxClient","options","getCreator","getPost","listCreatorPlans","listCreatorPosts","listFollowingCreators","listHomePosts","listSupportingPlans","listSupportingPosts","paginateCreatorPosts","__privateAdd","__privateSet","Http2Transport","path","query","url","__privateGet","key","value","request","parseJSONBody","text"]}
@@ -1,6 +1,10 @@
1
1
  import { type ClientHttp2Session } from "node:http2";
2
+ export interface Http2SessionManagerOptions {
3
+ sessionsPerOrigin?: number;
4
+ }
2
5
  export declare class Http2SessionManager {
3
6
  #private;
7
+ constructor({ sessionsPerOrigin }?: Http2SessionManagerOptions);
4
8
  closeAll(): Promise<void>;
5
9
  getSession(url: string): ClientHttp2Session;
6
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"http2-session.d.ts","sourceRoot":"","sources":["../../../src/transport/http2-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAW,MAAM,YAAY,CAAC;AAE9D,qBAAa,mBAAmB;;IAGxB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;CAqB5C"}
1
+ {"version":3,"file":"http2-session.d.ts","sourceRoot":"","sources":["../../../src/transport/http2-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAW,MAAM,YAAY,CAAC;AAE9D,MAAM,WAAW,0BAA0B;IACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAOD,qBAAa,mBAAmB;;gBAIlB,EAAE,iBAAqB,EAAE,GAAE,0BAA+B;IAIhE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;CA4C5C"}
@@ -1,42 +1,68 @@
1
1
  "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
2
8
  var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
3
9
  if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
10
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
5
11
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
6
12
  };
7
- var _Http2SessionManager_sessions;
13
+ var _Http2SessionManager_instances, _Http2SessionManager_pools, _Http2SessionManager_sessionsPerOrigin, _Http2SessionManager_createPool, _Http2SessionManager_createSession;
8
14
  Object.defineProperty(exports, "__esModule", { value: true });
9
15
  exports.Http2SessionManager = void 0;
10
16
  const node_http2_1 = require("node:http2");
11
17
  class Http2SessionManager {
12
- constructor() {
13
- _Http2SessionManager_sessions.set(this, new Map());
18
+ constructor({ sessionsPerOrigin = 5 } = {}) {
19
+ _Http2SessionManager_instances.add(this);
20
+ _Http2SessionManager_pools.set(this, new Map());
21
+ _Http2SessionManager_sessionsPerOrigin.set(this, void 0);
22
+ __classPrivateFieldSet(this, _Http2SessionManager_sessionsPerOrigin, Math.max(1, Math.floor(sessionsPerOrigin)), "f");
14
23
  }
15
24
  async closeAll() {
16
- const sessions = [...__classPrivateFieldGet(this, _Http2SessionManager_sessions, "f").values()];
17
- __classPrivateFieldGet(this, _Http2SessionManager_sessions, "f").clear();
25
+ const sessions = [...__classPrivateFieldGet(this, _Http2SessionManager_pools, "f").values()].flatMap((pool) => pool.sessions);
26
+ __classPrivateFieldGet(this, _Http2SessionManager_pools, "f").clear();
18
27
  await Promise.all(sessions.map(closeHttp2Session));
19
28
  }
20
29
  getSession(url) {
21
30
  const origin = new URL(url).origin;
22
- const existing = __classPrivateFieldGet(this, _Http2SessionManager_sessions, "f").get(origin);
23
- if (existing && !existing.closed && !existing.destroyed) {
24
- return existing;
31
+ const pool = __classPrivateFieldGet(this, _Http2SessionManager_pools, "f").get(origin) ?? __classPrivateFieldGet(this, _Http2SessionManager_instances, "m", _Http2SessionManager_createPool).call(this, origin);
32
+ if (pool.sessions.length < __classPrivateFieldGet(this, _Http2SessionManager_sessionsPerOrigin, "f")) {
33
+ const session = __classPrivateFieldGet(this, _Http2SessionManager_instances, "m", _Http2SessionManager_createSession).call(this, origin);
34
+ pool.sessions.push(session);
35
+ return session;
25
36
  }
26
- const session = (0, node_http2_1.connect)(origin);
27
- __classPrivateFieldGet(this, _Http2SessionManager_sessions, "f").set(origin, session);
28
- const cleanup = () => {
29
- if (__classPrivateFieldGet(this, _Http2SessionManager_sessions, "f").get(origin) === session) {
30
- __classPrivateFieldGet(this, _Http2SessionManager_sessions, "f").delete(origin);
31
- }
32
- };
33
- session.once("close", cleanup);
34
- session.once("error", cleanup);
37
+ const session = pool.sessions[pool.nextIndex % pool.sessions.length];
38
+ pool.nextIndex = (pool.nextIndex + 1) % pool.sessions.length;
35
39
  return session;
36
40
  }
37
41
  }
38
42
  exports.Http2SessionManager = Http2SessionManager;
39
- _Http2SessionManager_sessions = new WeakMap();
43
+ _Http2SessionManager_pools = new WeakMap(), _Http2SessionManager_sessionsPerOrigin = new WeakMap(), _Http2SessionManager_instances = new WeakSet(), _Http2SessionManager_createPool = function _Http2SessionManager_createPool(origin) {
44
+ const pool = { nextIndex: 0, sessions: [] };
45
+ __classPrivateFieldGet(this, _Http2SessionManager_pools, "f").set(origin, pool);
46
+ return pool;
47
+ }, _Http2SessionManager_createSession = function _Http2SessionManager_createSession(origin) {
48
+ const session = (0, node_http2_1.connect)(origin);
49
+ const cleanup = () => {
50
+ const pool = __classPrivateFieldGet(this, _Http2SessionManager_pools, "f").get(origin);
51
+ if (!pool)
52
+ return;
53
+ const index = pool.sessions.indexOf(session);
54
+ if (index >= 0) {
55
+ pool.sessions.splice(index, 1);
56
+ pool.nextIndex = Math.min(pool.nextIndex, pool.sessions.length);
57
+ }
58
+ if (pool.sessions.length === 0) {
59
+ __classPrivateFieldGet(this, _Http2SessionManager_pools, "f").delete(origin);
60
+ }
61
+ };
62
+ session.once("close", cleanup);
63
+ session.once("error", cleanup);
64
+ return session;
65
+ };
40
66
  function closeHttp2Session(session) {
41
67
  if (session.closed || session.destroyed) {
42
68
  return Promise.resolve();
@@ -1 +1 @@
1
- {"version":3,"file":"http2-session.js","sourceRoot":"","sources":["../../../src/transport/http2-session.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAA8D;AAE9D,MAAa,mBAAmB;IAAhC;QACW,wCAAY,IAAI,GAAG,EAA8B,EAAC;IA6B7D,CAAC;IA3BC,KAAK,CAAC,QAAQ;QACZ,MAAM,QAAQ,GAAG,CAAC,GAAG,uBAAA,IAAI,qCAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9C,uBAAA,IAAI,qCAAU,CAAC,KAAK,EAAE,CAAC;QACvB,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,UAAU,CAAC,GAAW;QACpB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;QACnC,MAAM,QAAQ,GAAG,uBAAA,IAAI,qCAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YACxD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAGD,MAAM,OAAO,GAAG,IAAA,oBAAO,EAAC,MAAM,CAAC,CAAC;QAChC,uBAAA,IAAI,qCAAU,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEpC,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,IAAI,uBAAA,IAAI,qCAAU,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE,CAAC;gBAC3C,uBAAA,IAAI,qCAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;QACH,CAAC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE/B,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AA9BD,kDA8BC;;AAED,SAAS,iBAAiB,CAAC,OAA2B;IACpD,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACxC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"http2-session.js","sourceRoot":"","sources":["../../../src/transport/http2-session.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type Http2SessionManagerOptions } from "./http2-session.js";
1
2
  export interface HttpTransport {
2
3
  fetch(input: Request | string | URL): Promise<Response>;
3
4
  }
@@ -6,6 +7,7 @@ export declare class Http2Error extends Error {
6
7
  }
7
8
  export declare class Http2Transport {
8
9
  #private;
10
+ constructor(options?: Http2SessionManagerOptions);
9
11
  fetch(input: Request | string | URL): Promise<Response>;
10
12
  }
11
13
  //# sourceMappingURL=http2.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http2.d.ts","sourceRoot":"","sources":["../../../src/transport/http2.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACzD;AAED,qBAAa,UAAW,SAAQ,KAAK;gBAChB,OAAO,EAAE,MAAM;CAInC;AAED,qBAAa,cAAc;;IAGzB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,GAAG;CA8BpC"}
1
+ {"version":3,"file":"http2.d.ts","sourceRoot":"","sources":["../../../src/transport/http2.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,oBAAoB,CAAC;AAI5B,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACzD;AAED,qBAAa,UAAW,SAAQ,KAAK;gBAChB,OAAO,EAAE,MAAM;CAInC;AAED,qBAAa,cAAc;;gBAGb,OAAO,GAAE,0BAA+B;IAIpD,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,GAAG;CA8BpC"}
@@ -1,4 +1,10 @@
1
1
  "use strict";
2
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
3
+ if (kind === "m") throw new TypeError("Private method is not writable");
4
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
5
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
6
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
7
+ };
2
8
  var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
3
9
  if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
4
10
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
@@ -17,8 +23,9 @@ class Http2Error extends Error {
17
23
  }
18
24
  exports.Http2Error = Http2Error;
19
25
  class Http2Transport {
20
- constructor() {
21
- _Http2Transport_pool.set(this, new http2_session_js_1.Http2SessionManager());
26
+ constructor(options = {}) {
27
+ _Http2Transport_pool.set(this, void 0);
28
+ __classPrivateFieldSet(this, _Http2Transport_pool, new http2_session_js_1.Http2SessionManager(options), "f");
22
29
  }
23
30
  fetch(input) {
24
31
  const request = input instanceof Request ? input : new Request(input);
@@ -1 +1 @@
1
- {"version":3,"file":"http2.js","sourceRoot":"","sources":["../../../src/transport/http2.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http2.js","sourceRoot":"","sources":["../../../src/transport/http2.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/transport/worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAqFD,qBAAa,aAAa;;gBAUtB,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,EAC9B,EACE,WAAiB,EACjB,UAAiB,EACjB,UAAc,EACd,gBAAgB,EAChB,SAAgC,GACjC,GAAE,mBAAwB;IAoBvB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,GAAG;CA2F5C"}
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/transport/worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAqFD,qBAAa,aAAa;;gBAUtB,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,EAC9B,EACE,WAAiB,EACjB,UAAiB,EACjB,UAAc,EACd,gBAAgB,EAChB,SAAsE,GACvE,GAAE,mBAAwB;IAoBvB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,GAAG;CA2F5C"}
@@ -67,7 +67,7 @@ class TimeRateLimiter {
67
67
  }
68
68
  _TimeRateLimiter_logger = new WeakMap(), _TimeRateLimiter_nextAvailableAt = new WeakMap();
69
69
  class RequestWorker {
70
- constructor({ logger }, { concurrency = 100, intervalMs = 1000, maxRetries = 3, rateLimitPauseMs, transport = new http2_js_1.Http2Transport(), } = {}) {
70
+ constructor({ logger }, { concurrency = 100, intervalMs = 1000, maxRetries = 3, rateLimitPauseMs, transport = new http2_js_1.Http2Transport({ sessionsPerOrigin: concurrency * 5 }), } = {}) {
71
71
  _RequestWorker_instances.add(this);
72
72
  _RequestWorker_concurrentLimiter.set(this, void 0);
73
73
  _RequestWorker_logger.set(this, void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/transport/worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/transport/worker.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,10 @@
1
1
  import { type ClientHttp2Session } from "node:http2";
2
+ export interface Http2SessionManagerOptions {
3
+ sessionsPerOrigin?: number;
4
+ }
2
5
  export declare class Http2SessionManager {
3
6
  #private;
7
+ constructor({ sessionsPerOrigin }?: Http2SessionManagerOptions);
4
8
  closeAll(): Promise<void>;
5
9
  getSession(url: string): ClientHttp2Session;
6
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"http2-session.d.ts","sourceRoot":"","sources":["../../../src/transport/http2-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAW,MAAM,YAAY,CAAC;AAE9D,qBAAa,mBAAmB;;IAGxB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;CAqB5C"}
1
+ {"version":3,"file":"http2-session.d.ts","sourceRoot":"","sources":["../../../src/transport/http2-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,kBAAkB,EAAW,MAAM,YAAY,CAAC;AAE9D,MAAM,WAAW,0BAA0B;IACzC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAOD,qBAAa,mBAAmB;;gBAIlB,EAAE,iBAAqB,EAAE,GAAE,0BAA+B;IAIhE,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAM/B,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,kBAAkB;CA4C5C"}
@@ -1,38 +1,64 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
1
7
  var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
8
  if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
11
  };
6
- var _Http2SessionManager_sessions;
12
+ var _Http2SessionManager_instances, _Http2SessionManager_pools, _Http2SessionManager_sessionsPerOrigin, _Http2SessionManager_createPool, _Http2SessionManager_createSession;
7
13
  import { connect } from "node:http2";
8
14
  export class Http2SessionManager {
9
- constructor() {
10
- _Http2SessionManager_sessions.set(this, new Map());
15
+ constructor({ sessionsPerOrigin = 5 } = {}) {
16
+ _Http2SessionManager_instances.add(this);
17
+ _Http2SessionManager_pools.set(this, new Map());
18
+ _Http2SessionManager_sessionsPerOrigin.set(this, void 0);
19
+ __classPrivateFieldSet(this, _Http2SessionManager_sessionsPerOrigin, Math.max(1, Math.floor(sessionsPerOrigin)), "f");
11
20
  }
12
21
  async closeAll() {
13
- const sessions = [...__classPrivateFieldGet(this, _Http2SessionManager_sessions, "f").values()];
14
- __classPrivateFieldGet(this, _Http2SessionManager_sessions, "f").clear();
22
+ const sessions = [...__classPrivateFieldGet(this, _Http2SessionManager_pools, "f").values()].flatMap((pool) => pool.sessions);
23
+ __classPrivateFieldGet(this, _Http2SessionManager_pools, "f").clear();
15
24
  await Promise.all(sessions.map(closeHttp2Session));
16
25
  }
17
26
  getSession(url) {
18
27
  const origin = new URL(url).origin;
19
- const existing = __classPrivateFieldGet(this, _Http2SessionManager_sessions, "f").get(origin);
20
- if (existing && !existing.closed && !existing.destroyed) {
21
- return existing;
28
+ const pool = __classPrivateFieldGet(this, _Http2SessionManager_pools, "f").get(origin) ?? __classPrivateFieldGet(this, _Http2SessionManager_instances, "m", _Http2SessionManager_createPool).call(this, origin);
29
+ if (pool.sessions.length < __classPrivateFieldGet(this, _Http2SessionManager_sessionsPerOrigin, "f")) {
30
+ const session = __classPrivateFieldGet(this, _Http2SessionManager_instances, "m", _Http2SessionManager_createSession).call(this, origin);
31
+ pool.sessions.push(session);
32
+ return session;
22
33
  }
23
- const session = connect(origin);
24
- __classPrivateFieldGet(this, _Http2SessionManager_sessions, "f").set(origin, session);
25
- const cleanup = () => {
26
- if (__classPrivateFieldGet(this, _Http2SessionManager_sessions, "f").get(origin) === session) {
27
- __classPrivateFieldGet(this, _Http2SessionManager_sessions, "f").delete(origin);
28
- }
29
- };
30
- session.once("close", cleanup);
31
- session.once("error", cleanup);
34
+ const session = pool.sessions[pool.nextIndex % pool.sessions.length];
35
+ pool.nextIndex = (pool.nextIndex + 1) % pool.sessions.length;
32
36
  return session;
33
37
  }
34
38
  }
35
- _Http2SessionManager_sessions = new WeakMap();
39
+ _Http2SessionManager_pools = new WeakMap(), _Http2SessionManager_sessionsPerOrigin = new WeakMap(), _Http2SessionManager_instances = new WeakSet(), _Http2SessionManager_createPool = function _Http2SessionManager_createPool(origin) {
40
+ const pool = { nextIndex: 0, sessions: [] };
41
+ __classPrivateFieldGet(this, _Http2SessionManager_pools, "f").set(origin, pool);
42
+ return pool;
43
+ }, _Http2SessionManager_createSession = function _Http2SessionManager_createSession(origin) {
44
+ const session = connect(origin);
45
+ const cleanup = () => {
46
+ const pool = __classPrivateFieldGet(this, _Http2SessionManager_pools, "f").get(origin);
47
+ if (!pool)
48
+ return;
49
+ const index = pool.sessions.indexOf(session);
50
+ if (index >= 0) {
51
+ pool.sessions.splice(index, 1);
52
+ pool.nextIndex = Math.min(pool.nextIndex, pool.sessions.length);
53
+ }
54
+ if (pool.sessions.length === 0) {
55
+ __classPrivateFieldGet(this, _Http2SessionManager_pools, "f").delete(origin);
56
+ }
57
+ };
58
+ session.once("close", cleanup);
59
+ session.once("error", cleanup);
60
+ return session;
61
+ };
36
62
  function closeHttp2Session(session) {
37
63
  if (session.closed || session.destroyed) {
38
64
  return Promise.resolve();
@@ -1 +1 @@
1
- {"version":3,"file":"http2-session.js","sourceRoot":"","sources":["../../../src/transport/http2-session.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAA2B,OAAO,EAAE,MAAM,YAAY,CAAC;AAE9D,MAAM,OAAO,mBAAmB;IAAhC;QACW,wCAAY,IAAI,GAAG,EAA8B,EAAC;IA6B7D,CAAC;IA3BC,KAAK,CAAC,QAAQ;QACZ,MAAM,QAAQ,GAAG,CAAC,GAAG,uBAAA,IAAI,qCAAU,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9C,uBAAA,IAAI,qCAAU,CAAC,KAAK,EAAE,CAAC;QACvB,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,UAAU,CAAC,GAAW;QACpB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;QACnC,MAAM,QAAQ,GAAG,uBAAA,IAAI,qCAAU,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC5C,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;YACxD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAGD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAChC,uBAAA,IAAI,qCAAU,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAEpC,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,IAAI,uBAAA,IAAI,qCAAU,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,OAAO,EAAE,CAAC;gBAC3C,uBAAA,IAAI,qCAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAChC,CAAC;QACH,CAAC,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE/B,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;;AAED,SAAS,iBAAiB,CAAC,OAA2B;IACpD,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACxC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;IAC3B,CAAC;IAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"http2-session.js","sourceRoot":"","sources":["../../../src/transport/http2-session.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type Http2SessionManagerOptions } from "./http2-session.js";
1
2
  export interface HttpTransport {
2
3
  fetch(input: Request | string | URL): Promise<Response>;
3
4
  }
@@ -6,6 +7,7 @@ export declare class Http2Error extends Error {
6
7
  }
7
8
  export declare class Http2Transport {
8
9
  #private;
10
+ constructor(options?: Http2SessionManagerOptions);
9
11
  fetch(input: Request | string | URL): Promise<Response>;
10
12
  }
11
13
  //# sourceMappingURL=http2.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"http2.d.ts","sourceRoot":"","sources":["../../../src/transport/http2.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACzD;AAED,qBAAa,UAAW,SAAQ,KAAK;gBAChB,OAAO,EAAE,MAAM;CAInC;AAED,qBAAa,cAAc;;IAGzB,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,GAAG;CA8BpC"}
1
+ {"version":3,"file":"http2.d.ts","sourceRoot":"","sources":["../../../src/transport/http2.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,0BAA0B,EAChC,MAAM,oBAAoB,CAAC;AAI5B,MAAM,WAAW,aAAa;IAC5B,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACzD;AAED,qBAAa,UAAW,SAAQ,KAAK;gBAChB,OAAO,EAAE,MAAM;CAInC;AAED,qBAAa,cAAc;;gBAGb,OAAO,GAAE,0BAA+B;IAIpD,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,GAAG;CA8BpC"}
@@ -1,10 +1,16 @@
1
+ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
2
+ if (kind === "m") throw new TypeError("Private method is not writable");
3
+ if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
4
+ if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
5
+ return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
6
+ };
1
7
  var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
2
8
  if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
3
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
4
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
5
11
  };
6
12
  var _Http2Transport_pool;
7
- import { Http2SessionManager } from "./http2-session.js";
13
+ import { Http2SessionManager, } from "./http2-session.js";
8
14
  const HTTP2_HEADER_STATUS = ":status";
9
15
  export class Http2Error extends Error {
10
16
  constructor(message) {
@@ -13,8 +19,9 @@ export class Http2Error extends Error {
13
19
  }
14
20
  }
15
21
  export class Http2Transport {
16
- constructor() {
17
- _Http2Transport_pool.set(this, new Http2SessionManager());
22
+ constructor(options = {}) {
23
+ _Http2Transport_pool.set(this, void 0);
24
+ __classPrivateFieldSet(this, _Http2Transport_pool, new Http2SessionManager(options), "f");
18
25
  }
19
26
  fetch(input) {
20
27
  const request = input instanceof Request ? input : new Request(input);
@@ -1 +1 @@
1
- {"version":3,"file":"http2.js","sourceRoot":"","sources":["../../../src/transport/http2.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http2.js","sourceRoot":"","sources":["../../../src/transport/http2.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/transport/worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAqFD,qBAAa,aAAa;;gBAUtB,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,EAC9B,EACE,WAAiB,EACjB,UAAiB,EACjB,UAAc,EACd,gBAAgB,EAChB,SAAgC,GACjC,GAAE,mBAAwB;IAoBvB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,GAAG;CA2F5C"}
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../../src/transport/worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EAAkB,KAAK,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhE,MAAM,WAAW,mBAAmB;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,aAAa,CAAC;CAC3B;AAqFD,qBAAa,aAAa;;gBAUtB,EAAE,MAAM,EAAE,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,EAC9B,EACE,WAAiB,EACjB,UAAiB,EACjB,UAAc,EACd,gBAAgB,EAChB,SAAsE,GACvE,GAAE,mBAAwB;IAoBvB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,GAAG,GAAG;CA2F5C"}
@@ -64,7 +64,7 @@ class TimeRateLimiter {
64
64
  }
65
65
  _TimeRateLimiter_logger = new WeakMap(), _TimeRateLimiter_nextAvailableAt = new WeakMap();
66
66
  export class RequestWorker {
67
- constructor({ logger }, { concurrency = 100, intervalMs = 1000, maxRetries = 3, rateLimitPauseMs, transport = new Http2Transport(), } = {}) {
67
+ constructor({ logger }, { concurrency = 100, intervalMs = 1000, maxRetries = 3, rateLimitPauseMs, transport = new Http2Transport({ sessionsPerOrigin: concurrency * 5 }), } = {}) {
68
68
  _RequestWorker_instances.add(this);
69
69
  _RequestWorker_concurrentLimiter.set(this, void 0);
70
70
  _RequestWorker_logger.set(this, void 0);
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/transport/worker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../../src/transport/worker.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@moontaiworks/fanbox-dl",
3
- "version": "1.5.1",
3
+ "version": "1.5.2",
4
4
  "description": "A TypeScript PixivFanbox Downloader and SDK",
5
5
  "author": "moontai0724",
6
6
  "license": "MIT",