Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions src/add/add.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import { readFile, stat } from 'node:fs/promises'
import pc from 'picocolors'
import pino from 'pino'
import { warnAboutCDNPricingLimitations } from '../common/cdn-warning.js'
import { displayUploadResults, performAutoFunding, performUpload, validatePaymentSetup } from '../common/upload-flow.js'
import {
cleanupSynapseService,
Expand Down Expand Up @@ -71,6 +72,17 @@ export async function runAdd(options: AddOptions): Promise<AddResult> {
level: process.env.LOG_LEVEL || 'error',
})

// Check CDN status and warn if enabled
const withCDN = process.env.WITH_CDN === 'true'
if (withCDN) {
const proceed = await warnAboutCDNPricingLimitations()
if (!proceed) {
cancel('Add cancelled')
process.exitCode = 1
throw new Error('CDN pricing limitations warning cancelled')
}
}

let tempCarPath: string | undefined

try {
Expand Down
28 changes: 28 additions & 0 deletions src/common/cdn-warning.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import { cancel, confirm } from '@clack/prompts'
import pc from 'picocolors'
import { log } from '../utils/cli-logger.js'

export async function warnAboutCDNPricingLimitations(): Promise<boolean> {
log.warn(pc.red('CDN Pricing Notice'))
log.newline()
log.line('Filecoin-pin currently does not support CDN pricing in payment calculations.')
log.newline()
log.line('This means:')
log.indent('• Deposit calculations may not be accurate for CDN storage')
log.indent('• You may need additional USDFC deposits for CDN-enabled uploads')
log.indent('• Filcdn is transitioning to egress-based billing (from fixed fees)')
log.newline()
log.flush()

const shouldProceed = await confirm({
message: 'Do you want to proceed with CDN-enabled upload?',
initialValue: false,
})

if (shouldProceed === null) {
cancel('Operation cancelled')
process.exitCode = 1
}

return Boolean(shouldProceed)
}
12 changes: 12 additions & 0 deletions src/import/import.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import { CarReader } from '@ipld/car'
import { CID } from 'multiformats/cid'
import pc from 'picocolors'
import pino from 'pino'
import { warnAboutCDNPricingLimitations } from '../common/cdn-warning.js'
import { displayUploadResults, performAutoFunding, performUpload, validatePaymentSetup } from '../common/upload-flow.js'
import {
cleanupSynapseService,
Expand Down Expand Up @@ -130,6 +131,17 @@ export async function runCarImport(options: ImportOptions): Promise<ImportResult
level: process.env.LOG_LEVEL || 'error',
})

// Check CDN status and warn if enabled
const withCDN = process.env.WITH_CDN === 'true'
if (withCDN) {
const proceed = await warnAboutCDNPricingLimitations()
if (!proceed) {
cancel('Import cancelled')
process.exitCode = 1
throw new Error('CDN pricing limitations warning cancelled')
}
}

try {
// Step 1: Validate file exists and is readable
spinner.start('Validating CAR file...')
Expand Down