@moontaiworks/fanbox-dl 1.7.0 → 1.7.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.
- package/dist/bundle/index.cjs.map +1 -1
- package/dist/bundle/index.d.cts +3 -1
- package/dist/bundle/index.d.ts +3 -1
- package/dist/bundle/index.js.map +1 -1
- package/dist/cjs/client/endpoints/user-list-supporting.d.ts +3 -1
- package/dist/cjs/client/endpoints/user-list-supporting.d.ts.map +1 -1
- package/dist/cjs/client/endpoints/user-list-supporting.js.map +1 -1
- package/dist/cjs/downloader/asset/download.d.ts +2 -2
- package/dist/cjs/downloader/asset/download.d.ts.map +1 -1
- package/dist/cjs/downloader/asset/download.js +2 -6
- package/dist/cjs/downloader/asset/download.js.map +1 -1
- package/dist/cjs/downloader/cli/resolver.d.ts +4 -2
- package/dist/cjs/downloader/cli/resolver.d.ts.map +1 -1
- package/dist/cjs/downloader/cli/resolver.js +1 -1
- package/dist/cjs/downloader/cli/resolver.js.map +1 -1
- package/dist/cjs/downloader/fs/filesystem.d.ts +1 -1
- package/dist/cjs/downloader/fs/filesystem.d.ts.map +1 -1
- package/dist/cjs/downloader/fs/filesystem.js +5 -5
- package/dist/cjs/downloader/fs/filesystem.js.map +1 -1
- package/dist/cjs/downloader/manifest/creator.d.ts +0 -1
- package/dist/cjs/downloader/manifest/creator.d.ts.map +1 -1
- package/dist/cjs/downloader/manifest/creator.js.map +1 -1
- package/dist/cjs/downloader/post/sync.js +3 -4
- package/dist/cjs/downloader/post/sync.js.map +1 -1
- package/dist/cjs/downloader/post/verify.d.ts.map +1 -1
- package/dist/cjs/downloader/post/verify.js +4 -13
- package/dist/cjs/downloader/post/verify.js.map +1 -1
- package/dist/esm/client/endpoints/user-list-supporting.d.ts +3 -1
- package/dist/esm/client/endpoints/user-list-supporting.d.ts.map +1 -1
- package/dist/esm/client/endpoints/user-list-supporting.js.map +1 -1
- package/dist/esm/downloader/asset/download.d.ts +2 -2
- package/dist/esm/downloader/asset/download.d.ts.map +1 -1
- package/dist/esm/downloader/asset/download.js +3 -7
- package/dist/esm/downloader/asset/download.js.map +1 -1
- package/dist/esm/downloader/cli/resolver.d.ts +4 -2
- package/dist/esm/downloader/cli/resolver.d.ts.map +1 -1
- package/dist/esm/downloader/cli/resolver.js +1 -1
- package/dist/esm/downloader/cli/resolver.js.map +1 -1
- package/dist/esm/downloader/fs/filesystem.d.ts +1 -1
- package/dist/esm/downloader/fs/filesystem.d.ts.map +1 -1
- package/dist/esm/downloader/fs/filesystem.js +4 -4
- package/dist/esm/downloader/fs/filesystem.js.map +1 -1
- package/dist/esm/downloader/manifest/creator.d.ts +0 -1
- package/dist/esm/downloader/manifest/creator.d.ts.map +1 -1
- package/dist/esm/downloader/manifest/creator.js.map +1 -1
- package/dist/esm/downloader/post/sync.js +3 -4
- package/dist/esm/downloader/post/sync.js.map +1 -1
- package/dist/esm/downloader/post/verify.d.ts.map +1 -1
- package/dist/esm/downloader/post/verify.js +5 -14
- package/dist/esm/downloader/post/verify.js.map +1 -1
- package/package.json +1 -1
|
@@ -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 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
|
+
{"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 interface ListSupportingPlansResult {\n plans: SupportingPlan[];\n}\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"]}
|
package/dist/bundle/index.d.cts
CHANGED
|
@@ -276,7 +276,9 @@ interface ListFollowingCreatorsResult {
|
|
|
276
276
|
}
|
|
277
277
|
declare function listFollowingCreators(this: FanboxClient): Promise<ListFollowingCreatorsResult>;
|
|
278
278
|
|
|
279
|
-
|
|
279
|
+
interface ListSupportingPlansResult {
|
|
280
|
+
plans: SupportingPlan[];
|
|
281
|
+
}
|
|
280
282
|
declare function listSupportingPlans(this: FanboxClient): Promise<ListSupportingPlansResult>;
|
|
281
283
|
|
|
282
284
|
interface FanboxClientOptions {
|
package/dist/bundle/index.d.ts
CHANGED
|
@@ -276,7 +276,9 @@ interface ListFollowingCreatorsResult {
|
|
|
276
276
|
}
|
|
277
277
|
declare function listFollowingCreators(this: FanboxClient): Promise<ListFollowingCreatorsResult>;
|
|
278
278
|
|
|
279
|
-
|
|
279
|
+
interface ListSupportingPlansResult {
|
|
280
|
+
plans: SupportingPlan[];
|
|
281
|
+
}
|
|
280
282
|
declare function listSupportingPlans(this: FanboxClient): Promise<ListSupportingPlansResult>;
|
|
281
283
|
|
|
282
284
|
interface FanboxClientOptions {
|
package/dist/bundle/index.js.map
CHANGED
|
@@ -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 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
|
+
{"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 interface ListSupportingPlansResult {\n plans: SupportingPlan[];\n}\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,5 +1,7 @@
|
|
|
1
1
|
import type { FanboxClient } from "../client.js";
|
|
2
2
|
import type { SupportingPlan } from "../models/plan.js";
|
|
3
|
-
export
|
|
3
|
+
export interface ListSupportingPlansResult {
|
|
4
|
+
plans: SupportingPlan[];
|
|
5
|
+
}
|
|
4
6
|
export declare function listSupportingPlans(this: FanboxClient): Promise<ListSupportingPlansResult>;
|
|
5
7
|
//# sourceMappingURL=user-list-supporting.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-list-supporting.d.ts","sourceRoot":"","sources":["../../../../src/client/endpoints/user-list-supporting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,
|
|
1
|
+
{"version":3,"file":"user-list-supporting.d.ts","sourceRoot":"","sources":["../../../../src/client/endpoints/user-list-supporting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAKD,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,yBAAyB,CAAC,CAEpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-list-supporting.js","sourceRoot":"","sources":["../../../../src/client/endpoints/user-list-supporting.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"user-list-supporting.js","sourceRoot":"","sources":["../../../../src/client/endpoints/user-list-supporting.ts"],"names":[],"mappings":";;AAUA,kDAIC;AAJM,KAAK,UAAU,mBAAmB;IAGvC,OAAO,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -8,11 +8,11 @@ interface DownloadAssetDeps {
|
|
|
8
8
|
}
|
|
9
9
|
interface DownloadAssetOptions {
|
|
10
10
|
destination: string;
|
|
11
|
-
fallbackDateTime: string;
|
|
12
11
|
mediaContent: MediaContent;
|
|
12
|
+
publishedDatetime: string;
|
|
13
13
|
timeOffset: number;
|
|
14
14
|
}
|
|
15
|
-
export declare function downloadAsset({ headers, logger, transport }: DownloadAssetDeps, { destination,
|
|
15
|
+
export declare function downloadAsset({ headers, logger, transport }: DownloadAssetDeps, { destination, mediaContent, publishedDatetime, timeOffset, }: DownloadAssetOptions): Promise<{
|
|
16
16
|
bytes: number;
|
|
17
17
|
modifiedTime: string;
|
|
18
18
|
sha256: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../../src/downloader/asset/download.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../../src/downloader/asset/download.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAQ9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,UAAU,iBAAiB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,aAAa,CAAC;CAC1B;AAED,UAAU,oBAAoB;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB;AAkBD,wBAAsB,aAAa,CACjC,EAAE,OAAY,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,iBAAiB,EACtD,EACE,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,UAAU,GACX,EAAE,oBAAoB;;;;GAsDxB"}
|
|
@@ -19,7 +19,7 @@ class AssetDownloadError extends Error {
|
|
|
19
19
|
this.url = url;
|
|
20
20
|
}
|
|
21
21
|
}
|
|
22
|
-
async function downloadAsset({ headers = {}, logger, transport }, { destination,
|
|
22
|
+
async function downloadAsset({ headers = {}, logger, transport }, { destination, mediaContent, publishedDatetime, timeOffset, }) {
|
|
23
23
|
if (await (0, filesystem_js_1.exists)(destination)) {
|
|
24
24
|
logger.debug(`Asset ${mediaContent.id} already exists at ${destination}`);
|
|
25
25
|
const [{ mtime, size: bytes }, sha256] = await Promise.all([
|
|
@@ -42,8 +42,7 @@ async function downloadAsset({ headers = {}, logger, transport }, { destination,
|
|
|
42
42
|
throw new AssetDownloadError(response, mediaContent.url, await response.text());
|
|
43
43
|
}
|
|
44
44
|
await write(tempFilePath, response, downloadedBytes);
|
|
45
|
-
const
|
|
46
|
-
const timestamp = offsetTimestamp(modified ? new Date(modified) : new Date(fallbackDateTime), timeOffset);
|
|
45
|
+
const timestamp = (0, filesystem_js_1.discardMilliseconds)(new Date(new Date(publishedDatetime).getTime() + timeOffset * 1000));
|
|
47
46
|
await (0, promises_1.utimes)(tempFilePath, timestamp, timestamp);
|
|
48
47
|
const [{ size: bytes }, sha256] = await Promise.all([
|
|
49
48
|
(0, filesystem_js_1.filesize)(tempFilePath),
|
|
@@ -53,9 +52,6 @@ async function downloadAsset({ headers = {}, logger, transport }, { destination,
|
|
|
53
52
|
const { mtime } = await (0, promises_1.stat)(destination);
|
|
54
53
|
return { bytes, modifiedTime: (0, filesystem_js_1.formatFileTimestamp)(mtime), sha256 };
|
|
55
54
|
}
|
|
56
|
-
function offsetTimestamp(timestamp, timeOffset) {
|
|
57
|
-
return new Date(timestamp.getTime() + timeOffset * 1000);
|
|
58
|
-
}
|
|
59
55
|
async function write(path, response, partialBytes) {
|
|
60
56
|
return (0, promises_2.pipeline)(response.body ?? "", (0, node_fs_1.createWriteStream)(path, {
|
|
61
57
|
flags: response.status === 206 && partialBytes > 0 ? "a" : "w",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../../../src/downloader/asset/download.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../../../src/downloader/asset/download.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../../src/downloader/cli/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,MAAM,WAAW,qBAAqB;IACpC,qBAAqB,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE;YAAE,SAAS,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,CAAC,CAAC;IACxE,mBAAmB,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../../src/downloader/cli/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,MAAM,WAAW,qBAAqB;IACpC,qBAAqB,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE;YAAE,SAAS,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,CAAC,CAAC;IACxE,mBAAmB,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE;YAAE,SAAS,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,qBAAqB;IAC7B,MAAM,EAAE,qBAAqB,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,iBAAiB,CACrC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,qBAAqB,EACzC,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,MAAM,EAAE,CAAC,CAqCnB"}
|
|
@@ -12,7 +12,7 @@ async function resolveCreatorIds({ client, logger }, options) {
|
|
|
12
12
|
}
|
|
13
13
|
}
|
|
14
14
|
if (options.supporting) {
|
|
15
|
-
const plans = await client.listSupportingPlans();
|
|
15
|
+
const { plans } = await client.listSupportingPlans();
|
|
16
16
|
logger.trace({ plans: plans.map((p) => p.creatorId) }, `Retrieved ${plans.length} supporting plans`);
|
|
17
17
|
for (const plan of plans) {
|
|
18
18
|
creatorIds.add(plan.creatorId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../../src/downloader/cli/resolver.ts"],"names":[],"mappings":";;AAmBA,8CAwCC;AAxCM,KAAK,UAAU,iBAAiB,CACrC,EAAE,MAAM,EAAE,MAAM,EAAyB,EACzC,OAAiC;IAEjC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,uBAAuB,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAE/C,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAC1D,MAAM,CAAC,KAAK,CACV,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAC9C,aAAa,QAAQ,CAAC,MAAM,qBAAqB,CAClD,CAAC;QACF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,mBAAmB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../../src/downloader/cli/resolver.ts"],"names":[],"mappings":";;AAmBA,8CAwCC;AAxCM,KAAK,UAAU,iBAAiB,CACrC,EAAE,MAAM,EAAE,MAAM,EAAyB,EACzC,OAAiC;IAEjC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,uBAAuB,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAE/C,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAC1D,MAAM,CAAC,KAAK,CACV,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAC9C,aAAa,QAAQ,CAAC,MAAM,qBAAqB,CAClD,CAAC;QACF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,EAAE,CAAC;QACrD,MAAM,CAAC,KAAK,CACV,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EACxC,aAAa,KAAK,CAAC,MAAM,mBAAmB,CAC7C,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC/C,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;IAC/B,MAAM,CAAC,IAAI,CACT,EAAE,UAAU,EAAE,MAAM,EAAE,EACtB,kBAAkB,MAAM,CAAC,MAAM,cAAc,CAC9C,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export declare function discardMilliseconds(timestamp: Date): Date;
|
|
1
2
|
export declare function exists(filePath: string): Promise<boolean>;
|
|
2
3
|
export declare function filesize(path: string): Promise<import("fs").Stats | {
|
|
3
4
|
size: number;
|
|
@@ -5,5 +6,4 @@ export declare function filesize(path: string): Promise<import("fs").Stats | {
|
|
|
5
6
|
export declare function formatFileTimestamp(timestamp: Date): string;
|
|
6
7
|
export declare function hashFile(filePath: string): Promise<string>;
|
|
7
8
|
export declare function isNotFoundError(error: unknown): boolean;
|
|
8
|
-
export declare function normalizeFileTimestamp(timestamp: Date): Date;
|
|
9
9
|
//# sourceMappingURL=filesystem.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../../../src/downloader/fs/filesystem.ts"],"names":[],"mappings":"AAIA,wBAAsB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ/D;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM;;GAM1C;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,CAE3D;AAED,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOhE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEvD
|
|
1
|
+
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../../../src/downloader/fs/filesystem.ts"],"names":[],"mappings":"AAIA,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,CAEzD;AAED,wBAAsB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ/D;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM;;GAM1C;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,CAE3D;AAED,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOhE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEvD"}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.discardMilliseconds = discardMilliseconds;
|
|
3
4
|
exports.exists = exists;
|
|
4
5
|
exports.filesize = filesize;
|
|
5
6
|
exports.formatFileTimestamp = formatFileTimestamp;
|
|
6
7
|
exports.hashFile = hashFile;
|
|
7
8
|
exports.isNotFoundError = isNotFoundError;
|
|
8
|
-
exports.normalizeFileTimestamp = normalizeFileTimestamp;
|
|
9
9
|
const node_crypto_1 = require("node:crypto");
|
|
10
10
|
const node_fs_1 = require("node:fs");
|
|
11
11
|
const promises_1 = require("node:fs/promises");
|
|
12
|
+
function discardMilliseconds(timestamp) {
|
|
13
|
+
return new Date(Math.trunc(timestamp.getTime() / 1000) * 1000);
|
|
14
|
+
}
|
|
12
15
|
async function exists(filePath) {
|
|
13
16
|
return (0, promises_1.stat)(filePath)
|
|
14
17
|
.then(() => true)
|
|
@@ -26,7 +29,7 @@ async function filesize(path) {
|
|
|
26
29
|
});
|
|
27
30
|
}
|
|
28
31
|
function formatFileTimestamp(timestamp) {
|
|
29
|
-
return
|
|
32
|
+
return discardMilliseconds(timestamp).toISOString();
|
|
30
33
|
}
|
|
31
34
|
async function hashFile(filePath) {
|
|
32
35
|
const hash = (0, node_crypto_1.createHash)("sha256");
|
|
@@ -37,9 +40,6 @@ async function hashFile(filePath) {
|
|
|
37
40
|
function isNotFoundError(error) {
|
|
38
41
|
return isNodeError(error) && error.code === "ENOENT";
|
|
39
42
|
}
|
|
40
|
-
function normalizeFileTimestamp(timestamp) {
|
|
41
|
-
return new Date(Math.trunc(timestamp.getTime() / 1000) * 1000);
|
|
42
|
-
}
|
|
43
43
|
function isNodeError(error) {
|
|
44
44
|
return error instanceof Error && "code" in error;
|
|
45
45
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../../../src/downloader/fs/filesystem.ts"],"names":[],"mappings":";;AAIA,wBAQC;AAED,4BAMC;AAED,kDAEC;AAED,4BAOC;AAED,0CAEC;
|
|
1
|
+
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../../../src/downloader/fs/filesystem.ts"],"names":[],"mappings":";;AAIA,kDAEC;AAED,wBAQC;AAED,4BAMC;AAED,kDAEC;AAED,4BAOC;AAED,0CAEC;AAzCD,6CAAyC;AACzC,qCAA2C;AAC3C,+CAAwC;AAExC,SAAgB,mBAAmB,CAAC,SAAe;IACjD,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAK,CAAC,GAAG,IAAK,CAAC,CAAC;AACnE,CAAC;AAEM,KAAK,UAAU,MAAM,CAAC,QAAgB;IAC3C,OAAO,IAAA,eAAI,EAAC,QAAQ,CAAC;SAClB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;SAChB,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QACxB,IAAI,eAAe,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAEzC,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;AACP,CAAC;AAEM,KAAK,UAAU,QAAQ,CAAC,IAAY;IACzC,OAAO,IAAA,eAAI,EAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QACzC,IAAI,eAAe,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAE/C,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,mBAAmB,CAAC,SAAe;IACjD,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;AACtD,CAAC;AAEM,KAAK,UAAU,QAAQ,CAAC,QAAgB;IAC7C,MAAM,IAAI,GAAG,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC;IAElC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,IAAA,0BAAgB,EAAC,QAAQ,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,KAAe,CAAC,CAAC;IAE/B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,SAAgB,eAAe,CAAC,KAAc;IAC5C,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;AACvD,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC;AACnD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creator.d.ts","sourceRoot":"","sources":["../../../../src/downloader/manifest/creator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAmB,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,
|
|
1
|
+
{"version":3,"file":"creator.d.ts","sourceRoot":"","sources":["../../../../src/downloader/manifest/creator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAmB,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACjD,OAAO,EAAE,CAAC,CAAC;CACZ;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,UAAU,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,KAAK,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;AAElE,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;CACpC;AAED,KAAK,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE5E,qBAAa,eAAgB,YAAW,mBAAmB;;aAkBvC,SAAS,EAAE,MAAM;IAjBnC,QAAQ,CAAC,OAAO,EAAG,CAAC,CAAU;IAC9B,IAAI,KAAK,uBAER;IAED,IAAI,KAAK,8CAER;gBASC,OAAO,EAAE,mBAAmB,EACZ,SAAS,EAAE,MAAM;IAS7B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAa3B,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAIhC,aAAa,IAAI,IAAI;IAIf,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAkB5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creator.js","sourceRoot":"","sources":["../../../../src/downloader/manifest/creator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAGA,yCAAyD;
|
|
1
|
+
{"version":3,"file":"creator.js","sourceRoot":"","sources":["../../../../src/downloader/manifest/creator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAGA,yCAAyD;AAsCzD,MAAa,eAAe;IAE1B,IAAI,KAAK;QACP,OAAO,uBAAA,IAAI,6BAAM,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,uBAAA,IAAI,6BAAM,CAAC,KAAK,CAAC;IAC1B,CAAC;IAQD,YACE,OAA4B,EACZ,SAAiB;QAAjB,cAAS,GAAT,SAAS,CAAQ;QAjB1B,YAAO,GAAG,CAAU,CAAC;QAS9B,wCAA2B;QAC3B,kCAAU,KAAK,EAAC;QAChB,0CAAgB;QAChB,gDAAsB;QACtB,yCAAmC;QAMjC,uBAAA,IAAI,2BAAW,OAAO,CAAC,MAAM,MAAA,CAAC;QAC9B,uBAAA,IAAI,iCAAiB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,MAAA,CAAC;QAC/D,uBAAA,IAAI,0BAAU,OAAO,CAAC,KAAK,IAAI,IAAI,0BAAe,EAAuB,MAAA,CAAC;QAE1E,uBAAA,IAAI,yBAAS,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAA,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,uBAAA,IAAI,+BAAQ;YAAE,OAAO;QACzB,uBAAA,IAAI,+BAAQ,CAAC,KAAK,CAChB,gCAAgC,IAAI,CAAC,SAAS,SAAS,uBAAA,IAAI,qCAAc,EAAE,CAC5E,CAAC;QAEF,uBAAA,IAAI,2BAAW,IAAI,MAAA,CAAC;QAEpB,MAAM,IAAI,GAAG,MAAM,uBAAA,IAAI,8BAAO,CAAC,IAAI,CAAC,uBAAA,IAAI,qCAAc,CAAC,CAAC;QAExD,uBAAA,IAAI,yBAAS,IAAI,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAA,CAAC;IAC5E,CAAC;IAED,UAAU,CAAC,KAAc;QACvB,uBAAA,IAAI,6BAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,aAAa;QACX,OAAO,uBAAA,IAAI,6BAAM,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,uBAAA,IAAI,6BAAM,CAAC,KAAK,CAAC,CAAC;QAC9C,IACE,CAAC,uBAAA,IAAI,6BAAM,CAAC,KAAK;YACjB,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,CAAC,CAAC,EACrE,CAAC;YAED,uBAAA,IAAI,+BAAQ,CAAC,KAAK,CAChB,oCAAoC,IAAI,CAAC,SAAS,kBAAkB,CACrE,CAAC;YACF,OAAO;QACT,CAAC;QAED,uBAAA,IAAI,+BAAQ,CAAC,KAAK,CAChB,+BAA+B,IAAI,CAAC,SAAS,OAAO,uBAAA,IAAI,qCAAc,EAAE,CACzE,CAAC;QACF,MAAM,uBAAA,IAAI,8BAAO,CAAC,IAAI,CAAC,uBAAA,IAAI,qCAAc,EAAE,uBAAA,IAAI,6BAAM,CAAC,CAAC;IACzD,CAAC;CACF;AAlED,0CAkEC"}
|
|
@@ -118,8 +118,8 @@ async function processContent({ headers, logger, pathManager, post, transport },
|
|
|
118
118
|
if (isMediaContent(content)) {
|
|
119
119
|
return syncMediaContent({ headers, logger, pathManager, transport }, {
|
|
120
120
|
content,
|
|
121
|
-
fallbackDateTime: post.updatedDatetime,
|
|
122
121
|
index,
|
|
122
|
+
publishedDatetime: post.publishedDatetime,
|
|
123
123
|
totalDigits,
|
|
124
124
|
});
|
|
125
125
|
}
|
|
@@ -129,12 +129,12 @@ async function processContent({ headers, logger, pathManager, post, transport },
|
|
|
129
129
|
logger.warn(`Post ${post.id} has unhandled content type ${content.type}, skipping.`);
|
|
130
130
|
return { unknown: true };
|
|
131
131
|
}
|
|
132
|
-
async function syncMediaContent({ headers, logger, pathManager, transport, }, { content,
|
|
132
|
+
async function syncMediaContent({ headers, logger, pathManager, transport, }, { content, index, publishedDatetime, totalDigits, }) {
|
|
133
133
|
const destination = pathManager.asset(mediaAssetSegments(content, index, totalDigits), content.extension);
|
|
134
134
|
const downloadResult = await (0, download_js_1.downloadAsset)({ headers, logger, transport }, {
|
|
135
135
|
destination,
|
|
136
|
-
fallbackDateTime,
|
|
137
136
|
mediaContent: content,
|
|
137
|
+
publishedDatetime,
|
|
138
138
|
timeOffset: index,
|
|
139
139
|
})
|
|
140
140
|
.then(({ bytes, modifiedTime, sha256 }) => ({ bytes, failed: false, modifiedTime, sha256 }))
|
|
@@ -165,7 +165,6 @@ async function syncMediaContent({ headers, logger, pathManager, transport, }, {
|
|
|
165
165
|
{
|
|
166
166
|
bytes: downloadResult.bytes,
|
|
167
167
|
contentIndex: index,
|
|
168
|
-
expectedTime: downloadResult.modifiedTime,
|
|
169
168
|
path: destination,
|
|
170
169
|
sha256: downloadResult.sha256,
|
|
171
170
|
status: "complete",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../../src/downloader/post/sync.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../../src/downloader/post/sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../../src/downloader/post/verify.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../../src/downloader/post/verify.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAEhC,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,kBAAkB,CACtC,EAAE,MAAM,EAAE,EAAE,mBAAmB,EAC/B,QAAQ,EAAE,gBAAgB,EAC1B,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,gBAAgB,CAAC,CAqB3B"}
|
|
@@ -15,15 +15,6 @@ async function verifyCompletePost({ logger }, manifest, postSummary) {
|
|
|
15
15
|
status: hasFailedAsset ? "partial" : "complete",
|
|
16
16
|
};
|
|
17
17
|
}
|
|
18
|
-
function expectedModifiedTime(asset, postSummary) {
|
|
19
|
-
if (asset.expectedTime) {
|
|
20
|
-
const modifiedTime = (0, filesystem_js_1.normalizeFileTimestamp)(new Date(asset.expectedTime));
|
|
21
|
-
if (!Number.isNaN(modifiedTime.getTime()))
|
|
22
|
-
return modifiedTime;
|
|
23
|
-
}
|
|
24
|
-
return (0, filesystem_js_1.normalizeFileTimestamp)(new Date(new Date(postSummary.updatedDatetime).getTime() +
|
|
25
|
-
asset.contentIndex * 1000));
|
|
26
|
-
}
|
|
27
18
|
function failedAsset(asset, error) {
|
|
28
19
|
return {
|
|
29
20
|
...asset,
|
|
@@ -52,13 +43,13 @@ async function verifyAsset({ logger }, asset, postSummary) {
|
|
|
52
43
|
if (actualSha256 !== asset.sha256) {
|
|
53
44
|
return failedAsset(asset, "sha256 mismatch");
|
|
54
45
|
}
|
|
55
|
-
const expectedTime =
|
|
46
|
+
const expectedTime = (0, filesystem_js_1.discardMilliseconds)(new Date(new Date(postSummary.publishedDatetime).getTime() +
|
|
47
|
+
asset.contentIndex * 1000));
|
|
56
48
|
const { mtimeMs } = await (0, promises_1.stat)(asset.path);
|
|
57
|
-
if ((0, filesystem_js_1.
|
|
58
|
-
expectedTime.getTime()) {
|
|
49
|
+
if ((0, filesystem_js_1.discardMilliseconds)(new Date(mtimeMs)).getTime() !== expectedTime.getTime()) {
|
|
59
50
|
logger.debug(`Repairing modified time of verified asset ${asset.path} from ${new Date(mtimeMs).toISOString()} to ${expectedTime.toISOString()}`);
|
|
60
51
|
await (0, promises_1.utimes)(asset.path, expectedTime, expectedTime);
|
|
61
52
|
}
|
|
62
|
-
return { ...asset
|
|
53
|
+
return { ...asset };
|
|
63
54
|
}
|
|
64
55
|
//# sourceMappingURL=verify.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../../src/downloader/post/verify.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../../src/downloader/post/verify.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { FanboxClient } from "../client.js";
|
|
2
2
|
import type { SupportingPlan } from "../models/plan.js";
|
|
3
|
-
export
|
|
3
|
+
export interface ListSupportingPlansResult {
|
|
4
|
+
plans: SupportingPlan[];
|
|
5
|
+
}
|
|
4
6
|
export declare function listSupportingPlans(this: FanboxClient): Promise<ListSupportingPlansResult>;
|
|
5
7
|
//# sourceMappingURL=user-list-supporting.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-list-supporting.d.ts","sourceRoot":"","sources":["../../../../src/client/endpoints/user-list-supporting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,
|
|
1
|
+
{"version":3,"file":"user-list-supporting.d.ts","sourceRoot":"","sources":["../../../../src/client/endpoints/user-list-supporting.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAKD,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,YAAY,GACjB,OAAO,CAAC,yBAAyB,CAAC,CAEpC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user-list-supporting.js","sourceRoot":"","sources":["../../../../src/client/endpoints/user-list-supporting.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"user-list-supporting.js","sourceRoot":"","sources":["../../../../src/client/endpoints/user-list-supporting.ts"],"names":[],"mappings":"AAUA,MAAM,CAAC,KAAK,UAAU,mBAAmB;IAGvC,OAAO,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -8,11 +8,11 @@ interface DownloadAssetDeps {
|
|
|
8
8
|
}
|
|
9
9
|
interface DownloadAssetOptions {
|
|
10
10
|
destination: string;
|
|
11
|
-
fallbackDateTime: string;
|
|
12
11
|
mediaContent: MediaContent;
|
|
12
|
+
publishedDatetime: string;
|
|
13
13
|
timeOffset: number;
|
|
14
14
|
}
|
|
15
|
-
export declare function downloadAsset({ headers, logger, transport }: DownloadAssetDeps, { destination,
|
|
15
|
+
export declare function downloadAsset({ headers, logger, transport }: DownloadAssetDeps, { destination, mediaContent, publishedDatetime, timeOffset, }: DownloadAssetOptions): Promise<{
|
|
16
16
|
bytes: number;
|
|
17
17
|
modifiedTime: string;
|
|
18
18
|
sha256: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../../src/downloader/asset/download.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../../../../src/downloader/asset/download.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAQ9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,UAAU,iBAAiB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,aAAa,CAAC;CAC1B;AAED,UAAU,oBAAoB;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,YAAY,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB;AAkBD,wBAAsB,aAAa,CACjC,EAAE,OAAY,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,iBAAiB,EACtD,EACE,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,UAAU,GACX,EAAE,oBAAoB;;;;GAsDxB"}
|
|
@@ -2,7 +2,7 @@ import { createWriteStream } from "node:fs";
|
|
|
2
2
|
import { mkdir, rename, stat, utimes } from "node:fs/promises";
|
|
3
3
|
import path from "node:path";
|
|
4
4
|
import { pipeline } from "node:stream/promises";
|
|
5
|
-
import { exists, filesize, formatFileTimestamp, hashFile, } from "../fs/filesystem.js";
|
|
5
|
+
import { discardMilliseconds, exists, filesize, formatFileTimestamp, hashFile, } from "../fs/filesystem.js";
|
|
6
6
|
class AssetDownloadError extends Error {
|
|
7
7
|
constructor(response, url, body) {
|
|
8
8
|
super(`Asset download failed: ${response.status} ${url}`);
|
|
@@ -13,7 +13,7 @@ class AssetDownloadError extends Error {
|
|
|
13
13
|
this.url = url;
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
|
-
export async function downloadAsset({ headers = {}, logger, transport }, { destination,
|
|
16
|
+
export async function downloadAsset({ headers = {}, logger, transport }, { destination, mediaContent, publishedDatetime, timeOffset, }) {
|
|
17
17
|
if (await exists(destination)) {
|
|
18
18
|
logger.debug(`Asset ${mediaContent.id} already exists at ${destination}`);
|
|
19
19
|
const [{ mtime, size: bytes }, sha256] = await Promise.all([
|
|
@@ -36,8 +36,7 @@ export async function downloadAsset({ headers = {}, logger, transport }, { desti
|
|
|
36
36
|
throw new AssetDownloadError(response, mediaContent.url, await response.text());
|
|
37
37
|
}
|
|
38
38
|
await write(tempFilePath, response, downloadedBytes);
|
|
39
|
-
const
|
|
40
|
-
const timestamp = offsetTimestamp(modified ? new Date(modified) : new Date(fallbackDateTime), timeOffset);
|
|
39
|
+
const timestamp = discardMilliseconds(new Date(new Date(publishedDatetime).getTime() + timeOffset * 1000));
|
|
41
40
|
await utimes(tempFilePath, timestamp, timestamp);
|
|
42
41
|
const [{ size: bytes }, sha256] = await Promise.all([
|
|
43
42
|
filesize(tempFilePath),
|
|
@@ -47,9 +46,6 @@ export async function downloadAsset({ headers = {}, logger, transport }, { desti
|
|
|
47
46
|
const { mtime } = await stat(destination);
|
|
48
47
|
return { bytes, modifiedTime: formatFileTimestamp(mtime), sha256 };
|
|
49
48
|
}
|
|
50
|
-
function offsetTimestamp(timestamp, timeOffset) {
|
|
51
|
-
return new Date(timestamp.getTime() + timeOffset * 1000);
|
|
52
|
-
}
|
|
53
49
|
async function write(path, response, partialBytes) {
|
|
54
50
|
return pipeline(response.body ?? "", createWriteStream(path, {
|
|
55
51
|
flags: response.status === 206 && partialBytes > 0 ? "a" : "w",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../../../src/downloader/asset/download.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAKhD,OAAO,EACL,MAAM,EACN,QAAQ,EACR,mBAAmB,EACnB,QAAQ,GACT,MAAM,qBAAqB,CAAC;AAgB7B,MAAM,kBAAmB,SAAQ,KAAK;IAMpC,YAAmB,QAAkB,EAAE,GAAW,EAAE,IAAa;QAC/D,KAAK,CAAC,0BAA0B,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,EAAE,OAAO,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAqB,EACtD,EACE,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"download.js","sourceRoot":"","sources":["../../../../src/downloader/asset/download.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAKhD,OAAO,EACL,mBAAmB,EACnB,MAAM,EACN,QAAQ,EACR,mBAAmB,EACnB,QAAQ,GACT,MAAM,qBAAqB,CAAC;AAgB7B,MAAM,kBAAmB,SAAQ,KAAK;IAMpC,YAAmB,QAAkB,EAAE,GAAW,EAAE,IAAa;QAC/D,KAAK,CAAC,0BAA0B,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;CACF;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,EAAE,OAAO,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAqB,EACtD,EACE,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,UAAU,GACW;IAEvB,IAAI,MAAM,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;QAC9B,MAAM,CAAC,KAAK,CAAC,SAAS,YAAY,CAAC,EAAE,sBAAsB,WAAW,EAAE,CAAC,CAAC;QAC1E,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YACzD,IAAI,CAAC,WAAW,CAAC;YACjB,QAAQ,CAAC,WAAW,CAAC;SACtB,CAAC,CAAC;QAEH,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACrE,CAAC;IAED,MAAM,CAAC,KAAK,CACV,eAAe,YAAY,CAAC,IAAI,UAAU,YAAY,CAAC,EAAE,OAAO,WAAW,EAAE,CAC9E,CAAC;IACF,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,YAAY,GAAG,WAAW,GAAG,OAAO,CAAC;IAE3C,MAAM,cAAc,GAAG,EAAE,GAAG,OAAO,EAAE,CAAC;IACtC,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC/D,IAAI,eAAe,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,KAAK,CACV,wBAAwB,YAAY,CAAC,IAAI,UAAU,YAAY,CAAC,EAAE,OAAO,YAAY,cAAc,eAAe,EAAE,CACrH,CAAC;QACF,cAAc,CAAC,KAAK,GAAG,SAAS,eAAe,GAAG,CAAC;IACrD,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,KAAK,CACpC,IAAI,OAAO,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC,CAC3D,CAAC;IACF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,kBAAkB,CAC1B,QAAQ,EACR,YAAY,CAAC,GAAG,EAChB,MAAM,QAAQ,CAAC,IAAI,EAAE,CACtB,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,CAAC,YAAY,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAC;IAErD,MAAM,SAAS,GAAG,mBAAmB,CACnC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE,GAAG,UAAU,GAAG,IAAK,CAAC,CACrE,CAAC;IACF,MAAM,MAAM,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAEjD,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAClD,QAAQ,CAAC,YAAY,CAAC;QACtB,QAAQ,CAAC,YAAY,CAAC;KACvB,CAAC,CAAC;IAEH,MAAM,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IACxC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,CAAC;IAE1C,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;AACrE,CAAC;AAED,KAAK,UAAU,KAAK,CAAC,IAAY,EAAE,QAAkB,EAAE,YAAoB;IACzE,OAAO,QAAQ,CACb,QAAQ,CAAC,IAAI,IAAI,EAAE,EACnB,iBAAiB,CAAC,IAAI,EAAE;QACtB,KAAK,EAAE,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;KAC/D,CAAC,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../../src/downloader/cli/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,MAAM,WAAW,qBAAqB;IACpC,qBAAqB,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE;YAAE,SAAS,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,CAAC,CAAC;IACxE,mBAAmB,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../../src/downloader/cli/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,MAAM,WAAW,qBAAqB;IACpC,qBAAqB,IAAI,OAAO,CAAC;QAAE,QAAQ,EAAE;YAAE,SAAS,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,CAAC,CAAC;IACxE,mBAAmB,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE;YAAE,SAAS,EAAE,MAAM,CAAA;SAAE,EAAE,CAAA;KAAE,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,qBAAqB;IAC7B,MAAM,EAAE,qBAAqB,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,iBAAiB,CACrC,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,qBAAqB,EACzC,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,MAAM,EAAE,CAAC,CAqCnB"}
|
|
@@ -9,7 +9,7 @@ export async function resolveCreatorIds({ client, logger }, options) {
|
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
11
|
if (options.supporting) {
|
|
12
|
-
const plans = await client.listSupportingPlans();
|
|
12
|
+
const { plans } = await client.listSupportingPlans();
|
|
13
13
|
logger.trace({ plans: plans.map((p) => p.creatorId) }, `Retrieved ${plans.length} supporting plans`);
|
|
14
14
|
for (const plan of plans) {
|
|
15
15
|
creatorIds.add(plan.creatorId);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../../src/downloader/cli/resolver.ts"],"names":[],"mappings":"AAmBA,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,EAAE,MAAM,EAAE,MAAM,EAAyB,EACzC,OAAiC;IAEjC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,uBAAuB,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAE/C,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAC1D,MAAM,CAAC,KAAK,CACV,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAC9C,aAAa,QAAQ,CAAC,MAAM,qBAAqB,CAClD,CAAC;QACF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,mBAAmB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../../src/downloader/cli/resolver.ts"],"names":[],"mappings":"AAmBA,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,EAAE,MAAM,EAAE,MAAM,EAAyB,EACzC,OAAiC;IAEjC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,uBAAuB,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAE/C,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACtB,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,qBAAqB,EAAE,CAAC;QAC1D,MAAM,CAAC,KAAK,CACV,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAC9C,aAAa,QAAQ,CAAC,MAAM,qBAAqB,CAClD,CAAC;QACF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,EAAE,CAAC;QACrD,MAAM,CAAC,KAAK,CACV,EAAE,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EACxC,aAAa,KAAK,CAAC,MAAM,mBAAmB,CAC7C,CAAC;QACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAC/C,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,GAAG,UAAU,CAAC,CAAC;IAC/B,MAAM,CAAC,IAAI,CACT,EAAE,UAAU,EAAE,MAAM,EAAE,EACtB,kBAAkB,MAAM,CAAC,MAAM,cAAc,CAC9C,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
export declare function discardMilliseconds(timestamp: Date): Date;
|
|
1
2
|
export declare function exists(filePath: string): Promise<boolean>;
|
|
2
3
|
export declare function filesize(path: string): Promise<import("fs").Stats | {
|
|
3
4
|
size: number;
|
|
@@ -5,5 +6,4 @@ export declare function filesize(path: string): Promise<import("fs").Stats | {
|
|
|
5
6
|
export declare function formatFileTimestamp(timestamp: Date): string;
|
|
6
7
|
export declare function hashFile(filePath: string): Promise<string>;
|
|
7
8
|
export declare function isNotFoundError(error: unknown): boolean;
|
|
8
|
-
export declare function normalizeFileTimestamp(timestamp: Date): Date;
|
|
9
9
|
//# sourceMappingURL=filesystem.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../../../src/downloader/fs/filesystem.ts"],"names":[],"mappings":"AAIA,wBAAsB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ/D;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM;;GAM1C;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,CAE3D;AAED,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOhE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEvD
|
|
1
|
+
{"version":3,"file":"filesystem.d.ts","sourceRoot":"","sources":["../../../../src/downloader/fs/filesystem.ts"],"names":[],"mappings":"AAIA,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,CAEzD;AAED,wBAAsB,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ/D;AAED,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM;;GAM1C;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,CAE3D;AAED,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOhE;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAEvD"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
import { createReadStream } from "node:fs";
|
|
3
3
|
import { stat } from "node:fs/promises";
|
|
4
|
+
export function discardMilliseconds(timestamp) {
|
|
5
|
+
return new Date(Math.trunc(timestamp.getTime() / 1000) * 1000);
|
|
6
|
+
}
|
|
4
7
|
export async function exists(filePath) {
|
|
5
8
|
return stat(filePath)
|
|
6
9
|
.then(() => true)
|
|
@@ -18,7 +21,7 @@ export async function filesize(path) {
|
|
|
18
21
|
});
|
|
19
22
|
}
|
|
20
23
|
export function formatFileTimestamp(timestamp) {
|
|
21
|
-
return
|
|
24
|
+
return discardMilliseconds(timestamp).toISOString();
|
|
22
25
|
}
|
|
23
26
|
export async function hashFile(filePath) {
|
|
24
27
|
const hash = createHash("sha256");
|
|
@@ -29,9 +32,6 @@ export async function hashFile(filePath) {
|
|
|
29
32
|
export function isNotFoundError(error) {
|
|
30
33
|
return isNodeError(error) && error.code === "ENOENT";
|
|
31
34
|
}
|
|
32
|
-
export function normalizeFileTimestamp(timestamp) {
|
|
33
|
-
return new Date(Math.trunc(timestamp.getTime() / 1000) * 1000);
|
|
34
|
-
}
|
|
35
35
|
function isNodeError(error) {
|
|
36
36
|
return error instanceof Error && "code" in error;
|
|
37
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../../../src/downloader/fs/filesystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,QAAgB;IAC3C,OAAO,IAAI,CAAC,QAAQ,CAAC;SAClB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;SAChB,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QACxB,IAAI,eAAe,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAEzC,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QACzC,IAAI,eAAe,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAE/C,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,SAAe;IACjD,OAAO,
|
|
1
|
+
{"version":3,"file":"filesystem.js","sourceRoot":"","sources":["../../../../src/downloader/fs/filesystem.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,MAAM,UAAU,mBAAmB,CAAC,SAAe;IACjD,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,IAAK,CAAC,GAAG,IAAK,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,QAAgB;IAC3C,OAAO,IAAI,CAAC,QAAQ,CAAC;SAClB,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC;SAChB,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QACxB,IAAI,eAAe,CAAC,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAEzC,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;QACzC,IAAI,eAAe,CAAC,KAAK,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAE/C,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,SAAe;IACjD,OAAO,mBAAmB,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,QAAgB;IAC7C,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;IAElC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,gBAAgB,CAAC,QAAQ,CAAC;QAClD,IAAI,CAAC,MAAM,CAAC,KAAe,CAAC,CAAC;IAE/B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;AACvD,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,KAAK,YAAY,KAAK,IAAI,MAAM,IAAI,KAAK,CAAC;AACnD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creator.d.ts","sourceRoot":"","sources":["../../../../src/downloader/manifest/creator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAmB,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,
|
|
1
|
+
{"version":3,"file":"creator.d.ts","sourceRoot":"","sources":["../../../../src/downloader/manifest/creator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAmB,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,WAAW,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAC;IACjD,OAAO,EAAE,CAAC,CAAC;CACZ;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACnD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,UAAU,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,KAAK,WAAW,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;AAElE,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,CAAC,EAAE,KAAK,CAAC,mBAAmB,CAAC,CAAC;CACpC;AAED,KAAK,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,CAAC;AAE5E,qBAAa,eAAgB,YAAW,mBAAmB;;aAkBvC,SAAS,EAAE,MAAM;IAjBnC,QAAQ,CAAC,OAAO,EAAG,CAAC,CAAU;IAC9B,IAAI,KAAK,uBAER;IAED,IAAI,KAAK,8CAER;gBASC,OAAO,EAAE,mBAAmB,EACZ,SAAS,EAAE,MAAM;IAS7B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAa3B,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAIhC,aAAa,IAAI,IAAI;IAIf,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAkB5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"creator.js","sourceRoot":"","sources":["../../../../src/downloader/manifest/creator.ts"],"names":[],"mappings":";;;;;;;;;;;;AAGA,OAAO,EAAE,eAAe,EAAc,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"creator.js","sourceRoot":"","sources":["../../../../src/downloader/manifest/creator.ts"],"names":[],"mappings":";;;;;;;;;;;;AAGA,OAAO,EAAE,eAAe,EAAc,MAAM,YAAY,CAAC;AAsCzD,MAAM,OAAO,eAAe;IAE1B,IAAI,KAAK;QACP,OAAO,uBAAA,IAAI,6BAAM,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,uBAAA,IAAI,6BAAM,CAAC,KAAK,CAAC;IAC1B,CAAC;IAQD,YACE,OAA4B,EACZ,SAAiB;QAAjB,cAAS,GAAT,SAAS,CAAQ;QAjB1B,YAAO,GAAG,CAAU,CAAC;QAS9B,wCAA2B;QAC3B,kCAAU,KAAK,EAAC;QAChB,0CAAgB;QAChB,gDAAsB;QACtB,yCAAmC;QAMjC,uBAAA,IAAI,2BAAW,OAAO,CAAC,MAAM,MAAA,CAAC;QAC9B,uBAAA,IAAI,iCAAiB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,MAAA,CAAC;QAC/D,uBAAA,IAAI,0BAAU,OAAO,CAAC,KAAK,IAAI,IAAI,eAAe,EAAuB,MAAA,CAAC;QAE1E,uBAAA,IAAI,yBAAS,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAA,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,uBAAA,IAAI,+BAAQ;YAAE,OAAO;QACzB,uBAAA,IAAI,+BAAQ,CAAC,KAAK,CAChB,gCAAgC,IAAI,CAAC,SAAS,SAAS,uBAAA,IAAI,qCAAc,EAAE,CAC5E,CAAC;QAEF,uBAAA,IAAI,2BAAW,IAAI,MAAA,CAAC;QAEpB,MAAM,IAAI,GAAG,MAAM,uBAAA,IAAI,8BAAO,CAAC,IAAI,CAAC,uBAAA,IAAI,qCAAc,CAAC,CAAC;QAExD,uBAAA,IAAI,yBAAS,IAAI,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAA,CAAC;IAC5E,CAAC;IAED,UAAU,CAAC,KAAc;QACvB,uBAAA,IAAI,6BAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,aAAa;QACX,OAAO,uBAAA,IAAI,6BAAM,CAAC,KAAK,CAAC;IAC1B,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,uBAAA,IAAI,6BAAM,CAAC,KAAK,CAAC,CAAC;QAC9C,IACE,CAAC,uBAAA,IAAI,6BAAM,CAAC,KAAK;YACjB,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,UAAU,CAAC,CAAC,EACrE,CAAC;YAED,uBAAA,IAAI,+BAAQ,CAAC,KAAK,CAChB,oCAAoC,IAAI,CAAC,SAAS,kBAAkB,CACrE,CAAC;YACF,OAAO;QACT,CAAC;QAED,uBAAA,IAAI,+BAAQ,CAAC,KAAK,CAChB,+BAA+B,IAAI,CAAC,SAAS,OAAO,uBAAA,IAAI,qCAAc,EAAE,CACzE,CAAC;QACF,MAAM,uBAAA,IAAI,8BAAO,CAAC,IAAI,CAAC,uBAAA,IAAI,qCAAc,EAAE,uBAAA,IAAI,6BAAM,CAAC,CAAC;IACzD,CAAC;CACF"}
|
|
@@ -114,8 +114,8 @@ async function processContent({ headers, logger, pathManager, post, transport },
|
|
|
114
114
|
if (isMediaContent(content)) {
|
|
115
115
|
return syncMediaContent({ headers, logger, pathManager, transport }, {
|
|
116
116
|
content,
|
|
117
|
-
fallbackDateTime: post.updatedDatetime,
|
|
118
117
|
index,
|
|
118
|
+
publishedDatetime: post.publishedDatetime,
|
|
119
119
|
totalDigits,
|
|
120
120
|
});
|
|
121
121
|
}
|
|
@@ -125,12 +125,12 @@ async function processContent({ headers, logger, pathManager, post, transport },
|
|
|
125
125
|
logger.warn(`Post ${post.id} has unhandled content type ${content.type}, skipping.`);
|
|
126
126
|
return { unknown: true };
|
|
127
127
|
}
|
|
128
|
-
async function syncMediaContent({ headers, logger, pathManager, transport, }, { content,
|
|
128
|
+
async function syncMediaContent({ headers, logger, pathManager, transport, }, { content, index, publishedDatetime, totalDigits, }) {
|
|
129
129
|
const destination = pathManager.asset(mediaAssetSegments(content, index, totalDigits), content.extension);
|
|
130
130
|
const downloadResult = await downloadAsset({ headers, logger, transport }, {
|
|
131
131
|
destination,
|
|
132
|
-
fallbackDateTime,
|
|
133
132
|
mediaContent: content,
|
|
133
|
+
publishedDatetime,
|
|
134
134
|
timeOffset: index,
|
|
135
135
|
})
|
|
136
136
|
.then(({ bytes, modifiedTime, sha256 }) => ({ bytes, failed: false, modifiedTime, sha256 }))
|
|
@@ -161,7 +161,6 @@ async function syncMediaContent({ headers, logger, pathManager, transport, }, {
|
|
|
161
161
|
{
|
|
162
162
|
bytes: downloadResult.bytes,
|
|
163
163
|
contentIndex: index,
|
|
164
|
-
expectedTime: downloadResult.modifiedTime,
|
|
165
164
|
path: destination,
|
|
166
165
|
sha256: downloadResult.sha256,
|
|
167
166
|
status: "complete",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../../src/downloader/post/sync.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../../src/downloader/post/sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../../src/downloader/post/verify.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../../src/downloader/post/verify.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAEhC,UAAU,mBAAmB;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,kBAAkB,CACtC,EAAE,MAAM,EAAE,EAAE,mBAAmB,EAC/B,QAAQ,EAAE,gBAAgB,EAC1B,WAAW,EAAE,WAAW,GACvB,OAAO,CAAC,gBAAgB,CAAC,CAqB3B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { stat, utimes } from "node:fs/promises";
|
|
2
|
-
import {
|
|
2
|
+
import { discardMilliseconds, exists, hashFile } from "../fs/filesystem.js";
|
|
3
3
|
export async function verifyCompletePost({ logger }, manifest, postSummary) {
|
|
4
4
|
const assets = Object.fromEntries(await Promise.all(Object.entries(manifest.assets).map(async ([id, asset]) => [
|
|
5
5
|
id,
|
|
@@ -12,15 +12,6 @@ export async function verifyCompletePost({ logger }, manifest, postSummary) {
|
|
|
12
12
|
status: hasFailedAsset ? "partial" : "complete",
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
|
-
function expectedModifiedTime(asset, postSummary) {
|
|
16
|
-
if (asset.expectedTime) {
|
|
17
|
-
const modifiedTime = normalizeFileTimestamp(new Date(asset.expectedTime));
|
|
18
|
-
if (!Number.isNaN(modifiedTime.getTime()))
|
|
19
|
-
return modifiedTime;
|
|
20
|
-
}
|
|
21
|
-
return normalizeFileTimestamp(new Date(new Date(postSummary.updatedDatetime).getTime() +
|
|
22
|
-
asset.contentIndex * 1000));
|
|
23
|
-
}
|
|
24
15
|
function failedAsset(asset, error) {
|
|
25
16
|
return {
|
|
26
17
|
...asset,
|
|
@@ -49,13 +40,13 @@ async function verifyAsset({ logger }, asset, postSummary) {
|
|
|
49
40
|
if (actualSha256 !== asset.sha256) {
|
|
50
41
|
return failedAsset(asset, "sha256 mismatch");
|
|
51
42
|
}
|
|
52
|
-
const expectedTime =
|
|
43
|
+
const expectedTime = discardMilliseconds(new Date(new Date(postSummary.publishedDatetime).getTime() +
|
|
44
|
+
asset.contentIndex * 1000));
|
|
53
45
|
const { mtimeMs } = await stat(asset.path);
|
|
54
|
-
if (
|
|
55
|
-
expectedTime.getTime()) {
|
|
46
|
+
if (discardMilliseconds(new Date(mtimeMs)).getTime() !== expectedTime.getTime()) {
|
|
56
47
|
logger.debug(`Repairing modified time of verified asset ${asset.path} from ${new Date(mtimeMs).toISOString()} to ${expectedTime.toISOString()}`);
|
|
57
48
|
await utimes(asset.path, expectedTime, expectedTime);
|
|
58
49
|
}
|
|
59
|
-
return { ...asset
|
|
50
|
+
return { ...asset };
|
|
60
51
|
}
|
|
61
52
|
//# sourceMappingURL=verify.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../../src/downloader/post/verify.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAKhD,OAAO,
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../../src/downloader/post/verify.ts"],"names":[],"mappings":"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"}
|