@codex-storage/sdk-js
Version:
Codex SDK to interact with the Codex decentralized storage network.
1 lines • 22.7 kB
Source Map (JSON)
{"version":3,"sources":["../src/marketplace/types.ts","../src/marketplace/marketplace.ts"],"names":["v2","result"],"mappings":"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","file":"chunk-IKKEHM5H.mjs","sourcesContent":["import type { components, paths } from \"../openapi\";\nimport * as v from \"valibot\";\n\nexport type CodexSlotResponse =\n paths[\"/sales/slots\"][\"get\"][\"responses\"][200][\"content\"][\"application/json\"];\n\nexport type CodexSlot = CodexSlotResponse;\n\nexport type CodexSlotAgentResponse =\n paths[\"/sales/slots/{slotId}\"][\"get\"][\"responses\"][200][\"content\"][\"application/json\"];\n\nexport type CodexSlotAgent = CodexSlotAgentResponse;\n\nexport type CodexAvailabilityResponse =\n paths[\"/sales/availability\"][\"get\"][\"responses\"][200][\"content\"][\"application/json\"];\n\nexport type CodexAvailabilityWithoutTypes =\n components[\"schemas\"][\"SalesAvailabilityREAD\"];\n\nexport type CodexAvailability = Omit<\n CodexAvailabilityWithoutTypes,\n | \"freeSize\"\n | \"totalSize\"\n | \"minPricePerBytePerSecond\"\n | \"duration\"\n | \"totalCollateral\"\n | \"totalRemainingCollateral\"\n> & {\n freeSize?: number;\n totalSize: number;\n duration: number;\n minPricePerBytePerSecond: number;\n totalCollateral: number;\n totalRemainingCollateral: number;\n};\n\nexport type CodexAvailabilityCreateResponse =\n paths[\"/sales/availability\"][\"post\"][\"responses\"][201][\"content\"][\"application/json\"];\n\nexport type CodexAvailabilityCreateBody = Exclude<\n paths[\"/sales/availability\"][\"post\"][\"requestBody\"],\n undefined\n>[\"content\"][\"application/json\"];\n\nexport const CodexCreateAvailabilityInput = v.strictObject({\n totalSize: v.pipe(v.number(), v.minValue(1)),\n duration: v.pipe(v.number(), v.minValue(1)),\n minPricePerBytePerSecond: v.number(),\n totalCollateral: v.number(),\n enabled: v.optional(v.boolean()),\n until: v.optional(v.number()),\n});\n\nexport type CodexAvailabilityPatchResponse =\n paths[\"/sales/availability/{id}\"][\"patch\"][\"responses\"][204][\"content\"];\n\nexport type CodexAvailabilityPatchBody = Exclude<\n paths[\"/sales/availability\"][\"post\"][\"requestBody\"],\n undefined\n>[\"content\"][\"application/json\"];\n\nexport type CodexCreateAvailabilityInput = v.InferOutput<\n typeof CodexCreateAvailabilityInput\n>;\n\nexport const CodexAvailabilityPatchInput = v.strictObject({\n id: v.string(),\n totalSize: v.pipe(v.number(), v.minValue(1)),\n duration: v.pipe(v.number(), v.minValue(1)),\n minPricePerBytePerSecond: v.number(),\n totalCollateral: v.number(),\n enabled: v.optional(v.boolean()),\n until: v.optional(v.number()),\n});\n\nexport type CodexAvailabilityPatchInput = v.InferOutput<\n typeof CodexAvailabilityPatchInput\n>;\n\nexport type CodexReservationsResponse =\n paths[\"/sales/availability/{id}/reservations\"][\"get\"][\"responses\"][200][\"content\"][\"application/json\"];\n\nexport type CodexReservation = components[\"schemas\"][\"Reservation\"];\n\nexport type CodexPurchaseIdsResponse =\n paths[\"/storage/purchases\"][\"get\"][\"responses\"][200][\"content\"][\"application/json\"];\n\nexport type CodexPurchaseResponse =\n paths[\"/storage/purchases/{id}\"][\"get\"][\"responses\"][200][\"content\"][\"application/json\"];\n\nexport type CodexStorageAsk = Omit<\n components[\"schemas\"][\"StorageAsk\"],\n \"slotSize\" | \"duration\" | \"proofProbability\" | \"pricePerBytePerSecond\"\n> & {\n slotSize: number;\n duration: number;\n proofProbability: number;\n pricePerBytePerSecond: number;\n};\n\nexport type CodexPurchaseWithoutTypes = components[\"schemas\"][\"Purchase\"];\n\nexport type CodexPurchase = Omit<\n components[\"schemas\"][\"Purchase\"],\n \"request\"\n> & {\n request?: Omit<components[\"schemas\"][\"StorageRequest\"], \"ask\"> & {\n ask: CodexStorageAsk;\n };\n};\n\nexport type CodexStorageRequestResponse =\n paths[\"/storage/request/{cid}\"][\"post\"][\"responses\"][200][\"content\"][\"text/plain\"];\n\nexport type CodexStorageRequestCreateBody = Exclude<\n paths[\"/storage/request/{cid}\"][\"post\"][\"requestBody\"],\n undefined\n>[\"content\"][\"application/json\"];\n\nexport const CodexCreateStorageRequestInput = v.strictObject({\n cid: v.string(),\n duration: v.pipe(v.number(), v.minValue(1)),\n pricePerBytePerSecond: v.number(),\n proofProbability: v.number(),\n nodes: v.optional(v.number(), 1),\n tolerance: v.optional(v.number(), 0),\n expiry: v.pipe(v.number(), v.minValue(1)),\n collateralPerByte: v.number(),\n});\n\nexport type CodexCreateStorageRequestInput = v.InferOutput<\n typeof CodexCreateStorageRequestInput\n>;\n","import * as v from \"valibot\";\nimport { Api } from \"../api/config\";\nimport { CodexError, CodexValibotIssuesMap } from \"../errors/errors\";\nimport {\n Fetch,\n FetchAuthBuilder,\n type FetchAuth,\n} from \"../fetch-safe/fetch-safe\";\nimport type { SafeValue } from \"../values/values\";\nimport {\n type CodexAvailabilityResponse,\n type CodexAvailability,\n type CodexSlot,\n type CodexSlotAgent,\n type CodexSlotResponse,\n type CodexSlotAgentResponse,\n type CodexAvailabilityWithoutTypes,\n type CodexAvailabilityCreateResponse,\n type CodexAvailabilityCreateBody,\n CodexAvailabilityPatchInput,\n type CodexReservationsResponse,\n type CodexPurchaseIdsResponse,\n type CodexPurchaseResponse,\n type CodexPurchase,\n type CodexStorageRequestCreateBody,\n type CodexReservation,\n type CodexPurchaseWithoutTypes,\n} from \"./types\";\nimport {\n CodexCreateAvailabilityInput,\n CodexCreateStorageRequestInput,\n} from \"./types\";\n\ntype CodexMarketplaceOptions = {\n auth?: FetchAuth;\n};\n\nexport class CodexMarketplace {\n readonly url: string;\n readonly auth: FetchAuth = {};\n\n constructor(url: string, options?: CodexMarketplaceOptions) {\n this.url = url;\n\n if (options?.auth) {\n this.auth = options.auth;\n }\n }\n\n /**\n * Returns active slots\n */\n async activeSlots(): Promise<SafeValue<CodexSlot[]>> {\n const url = this.url + Api.config.prefix + \"/sales/slots\";\n\n return Fetch.safeJson<CodexSlotResponse[]>(url, {\n method: \"GET\",\n headers: FetchAuthBuilder.build(this.auth),\n });\n }\n\n /**\n * Returns active slot with id {slotId} for the host\n */\n async activeSlot(slotId: string): Promise<SafeValue<CodexSlotAgent>> {\n const url = this.url + Api.config.prefix + \"/sales/slots/\" + slotId;\n\n return Fetch.safeJson<CodexSlotAgentResponse>(url, {\n method: \"GET\",\n headers: FetchAuthBuilder.build(this.auth),\n });\n }\n\n private transformAvailability({\n freeSize,\n ...a\n }: CodexAvailabilityWithoutTypes) {\n const availability: CodexAvailability = {\n ...a,\n minPricePerBytePerSecond: parseInt(a.minPricePerBytePerSecond, 10),\n totalCollateral: parseInt(a.totalCollateral, 10),\n totalRemainingCollateral: parseInt(a.totalRemainingCollateral, 10),\n };\n\n if (freeSize) {\n availability.freeSize = freeSize;\n }\n\n return availability;\n }\n\n /**\n * Returns storage that is for sale\n */\n async availabilities(): Promise<SafeValue<CodexAvailability[]>> {\n const url = this.url + Api.config.prefix + \"/sales/availability\";\n\n const res = await Fetch.safeJson<CodexAvailabilityResponse>(url, {\n method: \"GET\",\n headers: FetchAuthBuilder.build(this.auth),\n });\n\n if (res.error) {\n return res;\n }\n\n return {\n error: false,\n data: res.data.map(this.transformAvailability),\n };\n }\n\n /**\n * Offers storage for sale\n */\n async createAvailability(\n input: CodexCreateAvailabilityInput\n ): Promise<SafeValue<CodexAvailability>> {\n const result = v.safeParse(CodexCreateAvailabilityInput, input);\n\n if (!result.success) {\n return {\n error: true,\n data: new CodexError(\"Cannot validate the input\", {\n errors: CodexValibotIssuesMap(result.issues),\n }),\n };\n }\n\n const url = this.url + Api.config.prefix + \"/sales/availability\";\n\n const body: CodexAvailabilityCreateBody = {\n totalSize: result.output.totalSize,\n duration: result.output.duration,\n minPricePerBytePerSecond:\n result.output.minPricePerBytePerSecond.toString(),\n totalCollateral: result.output.totalCollateral.toString(),\n };\n\n if (result.output.enabled) {\n body.enabled = result.output.enabled;\n }\n\n if (result.output.until) {\n body.until = result.output.until;\n }\n\n return Fetch.safeJson<CodexAvailabilityCreateResponse>(url, {\n method: \"POST\",\n headers: FetchAuthBuilder.build(this.auth),\n body: JSON.stringify(body),\n }).then((result) => {\n if (result.error) {\n return result;\n }\n\n return { error: false, data: this.transformAvailability(result.data) };\n });\n }\n\n /**\n * The new parameters will be only considered for new requests.\n * Existing Requests linked to this Availability will continue as is.\n */\n async updateAvailability(\n input: CodexAvailabilityPatchInput\n ): Promise<SafeValue<\"\">> {\n const result = v.safeParse(CodexAvailabilityPatchInput, input);\n\n if (!result.success) {\n return {\n error: true,\n data: new CodexError(\"Cannot validate the input\", {\n errors: CodexValibotIssuesMap(result.issues),\n }),\n };\n }\n\n const url =\n this.url + Api.config.prefix + \"/sales/availability/\" + result.output.id;\n\n const body: CodexAvailabilityCreateBody = {\n totalSize: result.output.totalSize,\n duration: result.output.duration,\n minPricePerBytePerSecond:\n result.output.minPricePerBytePerSecond.toString(),\n totalCollateral: result.output.totalCollateral.toString(),\n };\n\n if (result.output.enabled) {\n body.enabled = result.output.enabled;\n }\n\n if (result.output.until) {\n body.until = result.output.until;\n }\n\n const res = await Fetch.safe(url, {\n method: \"PATCH\",\n headers: FetchAuthBuilder.build(this.auth),\n body: JSON.stringify(body),\n });\n\n if (res.error) {\n return res;\n }\n\n return { error: false, data: \"\" };\n }\n\n /**\n * Return's list of Reservations for ongoing Storage Requests that the node hosts.\n */\n async reservations(\n availabilityId: string\n ): Promise<SafeValue<CodexReservation[]>> {\n const url =\n this.url +\n Api.config.prefix +\n `/sales/availability/${availabilityId}/reservations`;\n\n return Fetch.safeJson<CodexReservationsResponse>(url, {\n method: \"GET\",\n headers: FetchAuthBuilder.build(this.auth),\n });\n }\n\n /**\n * Returns list of purchase IDs\n */\n async purchaseIds(): Promise<SafeValue<CodexPurchaseIdsResponse>> {\n const url = this.url + Api.config.prefix + `/storage/purchases`;\n\n return Fetch.safeJson<CodexPurchaseIdsResponse>(url, {\n method: \"GET\",\n headers: FetchAuthBuilder.build(this.auth),\n });\n }\n\n private transformPurchase(p: CodexPurchaseWithoutTypes): CodexPurchase {\n const purchase: CodexPurchase = {\n requestId: p.requestId,\n state: p.state,\n };\n\n if (p.error) {\n purchase.error = p.error;\n }\n\n if (!p.request) {\n return purchase;\n }\n\n return {\n ...purchase,\n request: {\n ...p.request,\n ask: {\n ...p.request.ask,\n proofProbability: parseInt(p.request.ask.proofProbability, 10),\n pricePerBytePerSecond: parseInt(\n p.request.ask.pricePerBytePerSecond,\n 10\n ),\n },\n },\n };\n }\n\n async purchases(): Promise<SafeValue<CodexPurchase[]>> {\n const res = await this.purchaseIds();\n\n if (res.error) {\n return res;\n }\n\n const promises = [];\n\n for (const id of res.data) {\n promises.push(this.purchaseDetail(id));\n }\n\n const purchases = await Promise.all(promises);\n\n return {\n error: false,\n data: purchases.map((p) =>\n p.error\n ? ({\n state: \"error\",\n error: p.data.message,\n requestId: \"\",\n } satisfies CodexPurchase)\n : p.data\n ),\n };\n }\n\n /**\n * Returns purchase details\n */\n async purchaseDetail(purchaseId: string): Promise<SafeValue<CodexPurchase>> {\n const url =\n this.url + Api.config.prefix + `/storage/purchases/` + purchaseId;\n\n return Fetch.safeJson<CodexPurchaseResponse>(url, {\n headers: FetchAuthBuilder.build(this.auth),\n method: \"GET\",\n }).then((res) => {\n if (res.error) {\n return res;\n }\n\n return { error: false, data: this.transformPurchase(res.data) };\n });\n }\n\n /**\n * Creates a new request for storage.\n */\n async createStorageRequest(\n input: CodexCreateStorageRequestInput\n ): Promise<SafeValue<string>> {\n const result = v.safeParse(CodexCreateStorageRequestInput, input);\n\n if (!result.success) {\n return {\n error: true,\n data: new CodexError(\"Cannot validate the input\", {\n errors: CodexValibotIssuesMap(result.issues),\n }),\n };\n }\n\n const {\n cid,\n duration,\n pricePerBytePerSecond,\n proofProbability,\n nodes,\n collateralPerByte,\n expiry,\n tolerance,\n } = result.output;\n const url = this.url + Api.config.prefix + \"/storage/request/\" + cid;\n\n return Fetch.safeText(url, {\n method: \"POST\",\n headers: FetchAuthBuilder.build(this.auth),\n body: JSON.stringify({\n duration,\n pricePerBytePerSecond: pricePerBytePerSecond.toString(),\n proofProbability: proofProbability.toString(),\n nodes,\n collateralPerByte: collateralPerByte.toString(),\n expiry,\n tolerance,\n } satisfies CodexStorageRequestCreateBody),\n });\n }\n}\n"]}