Skip to content

Commit 1390106

Browse files
authored
feat: add legacy handlers (#117)
This PR adds the legacy `store/*` and `admin/store/inspect` handlers from the `@web3-storage/upload-api` in order to support deprecated actions for a bit longer, per storacha/RFC#38 refs storacha/project-tracking#268
1 parent 3ad8fc0 commit 1390106

File tree

6 files changed

+75
-5
lines changed

6 files changed

+75
-5
lines changed

packages/upload-api/package.json

+1
Original file line numberDiff line numberDiff line change
@@ -202,6 +202,7 @@
202202
"@ucanto/transport": "^9.1.1",
203203
"@ucanto/validator": "^9.0.2",
204204
"@web3-storage/content-claims": "^5.1.3",
205+
"@web3-storage/upload-api": "^19.0.0",
205206
"multiformats": "^12.1.2",
206207
"uint8arrays": "^5.0.3"
207208
},

packages/upload-api/src/lib.js

+10-1
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ import { createService as createUcanService } from './ucan.js'
2020
import { createService as createPlanService } from './plan.js'
2121
import { createService as createUsageService } from './usage.js'
2222
import { createService as createFilecoinService } from '@storacha/filecoin-api/storefront/service'
23+
import { createService as createLegacyAdminService } from '@web3-storage/upload-api/admin'
24+
import { createService as createLegacyStoreService } from '@web3-storage/upload-api/store'
2325
import * as AgentMessage from './utils/agent-message.js'
2426

2527
export * from './types.js'
@@ -178,7 +180,12 @@ export const createService = (context) => ({
178180
customer: createCustomerService(context),
179181
provider: createProviderService(context),
180182
'rate-limit': createRateLimitService(context),
181-
admin: createAdminService(context),
183+
admin: {
184+
...createAdminService(context),
185+
// @ts-expect-error `uploadTable` items now have a `cause` field. This does
186+
// not matter since `admin/store/inspect` handler does not use this table.
187+
store: createLegacyAdminService(context).store
188+
},
182189
space: createSpaceService(context),
183190
subscription: createSubscriptionService(context),
184191
upload: createUploadService(context),
@@ -187,6 +194,8 @@ export const createService = (context) => ({
187194
// storefront of filecoin pipeline
188195
filecoin: createFilecoinService(context).filecoin,
189196
usage: createUsageService(context),
197+
// legacy
198+
store: createLegacyStoreService(context),
190199
})
191200

192201
/**

packages/upload-api/src/types.ts

+13-4
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,11 @@ import type { ProviderInput, ConnectionView } from '@ucanto/server'
3333

3434
import { StorefrontService } from '@storacha/filecoin-api/types'
3535
import { ServiceContext as FilecoinServiceContext } from '@storacha/filecoin-api/storefront/api'
36+
import {
37+
Service as LegacyService,
38+
StoreServiceContext as LegacyStoreServiceContext,
39+
AdminServiceContext as LegacyAdminServiceContext
40+
} from '@web3-storage/upload-api'
3641
import { DelegationsStorage as Delegations } from './types/delegations.js'
3742
import { ProvisionsStorage as Provisions } from './types/provisions.js'
3843
import { RateLimitsStorage as RateLimits } from './types/rate-limits.js'
@@ -271,7 +276,6 @@ export interface Service extends StorefrontService {
271276
RateLimitListFailure
272277
>
273278
}
274-
275279
ucan: {
276280
conclude: ServiceMethod<
277281
UCANConclude,
@@ -280,8 +284,8 @@ export interface Service extends StorefrontService {
280284
>
281285
revoke: ServiceMethod<UCANRevoke, UCANRevokeSuccess, UCANRevokeFailure>
282286
}
283-
284287
admin: {
288+
store: LegacyService['admin']['store']
285289
upload: {
286290
inspect: ServiceMethod<
287291
AdminUploadInspect,
@@ -337,6 +341,8 @@ export interface Service extends StorefrontService {
337341
usage: {
338342
report: ServiceMethod<UsageReport, UsageReportSuccess, UsageReportFailure>
339343
}
344+
// legacy handlers
345+
store: LegacyService['store']
340346
}
341347

342348
export type BlobServiceContext = SpaceServiceContext & {
@@ -382,6 +388,7 @@ export interface CustomerServiceContext {
382388
export interface AdminServiceContext {
383389
signer: Signer
384390
uploadTable: UploadTable
391+
storeTable: LegacyAdminServiceContext['storeTable']
385392
}
386393

387394
export interface ConsoleServiceContext {}
@@ -434,7 +441,8 @@ export interface UsageServiceContext {
434441
}
435442

436443
export interface ServiceContext
437-
extends AgentContext,
444+
extends AdminServiceContext,
445+
AgentContext,
438446
AccessServiceContext,
439447
ConsoleServiceContext,
440448
ConsumerServiceContext,
@@ -450,7 +458,8 @@ export interface ServiceContext
450458
UploadServiceContext,
451459
FilecoinServiceContext,
452460
IndexServiceContext,
453-
UsageServiceContext {}
461+
UsageServiceContext,
462+
LegacyStoreServiceContext {}
454463

455464
export interface UcantoServerContext extends ServiceContext, RevocationChecker {
456465
id: Signer

packages/upload-api/test/helpers/context.js

+8
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,14 @@ export const createContext = async (
9090
audience: dealTrackerSigner,
9191
},
9292
},
93+
// Legacy dependencies.
94+
// The following dependencies are legacy and will eventually be removed.
95+
// @ts-expect-error legacy dependency not used or tested here
96+
maxUploadSize: null,
97+
// @ts-expect-error legacy dependency not used or tested here
98+
storeTable: {},
99+
// @ts-expect-error legacy dependency not used or tested here
100+
carStoreBucket: {},
93101
}
94102

95103
const connection = connect({

packages/upload-api/test/storage/agent-store.js

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import * as API from '../../src/types.js'
22
import { CAR, Invocation, Receipt } from '@ucanto/core'
33
import { RecordNotFound } from '../../src/errors.js'
44

5+
/** @returns {API.AgentStore} */
56
export const memory = () => new AgentStore()
67

78
/**

pnpm-lock.yaml

+42
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)