@apifuse/provider-sdk 2.2.0-beta.35 → 2.2.0-beta.37

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.
Files changed (44) hide show
  1. package/AUTHORING.md +22 -8
  2. package/CHANGELOG.md +8 -0
  3. package/README.md +20 -8
  4. package/bin/apifuse-dev.ts +1 -1
  5. package/bin/apifuse-pack-types.ts +6 -5
  6. package/bin/apifuse-record.ts +1 -1
  7. package/bin/apifuse-submit-check.ts +23 -10
  8. package/dist/ceremonies/index.d.ts +8 -0
  9. package/dist/ceremonies/index.js +32 -25
  10. package/dist/cli/templates/provider/Dockerfile.tpl +1 -1
  11. package/dist/cli/templates/provider/index.ts.tpl +6 -3
  12. package/dist/cli/templates/provider/operations/ping.ts.tpl +2 -1
  13. package/dist/define.d.ts +46 -25
  14. package/dist/define.js +381 -9
  15. package/dist/index.d.ts +2 -2
  16. package/dist/provider.d.ts +2 -1
  17. package/dist/runtime/browser.js +19 -11
  18. package/dist/runtime/choice.js +24 -7
  19. package/dist/runtime/resolver-public.d.ts +1 -1
  20. package/dist/runtime/resolver-public.js +1 -1
  21. package/dist/runtime/resolver-vendors/browser.js +57 -14
  22. package/dist/runtime/resolver-vendors/types.d.ts +9 -1
  23. package/dist/runtime/resolver-vendors/types.js +15 -0
  24. package/dist/runtime/resolver.d.ts +1 -0
  25. package/dist/runtime/resolver.js +13 -7
  26. package/dist/server/serve-implementation.js +25 -0
  27. package/dist/types.d.ts +25 -17
  28. package/package.json +6 -1
  29. package/src/ceremonies/index.ts +45 -31
  30. package/src/cli/templates/provider/Dockerfile.tpl +1 -1
  31. package/src/cli/templates/provider/index.ts.tpl +6 -3
  32. package/src/cli/templates/provider/operations/ping.ts.tpl +2 -1
  33. package/src/define.ts +462 -59
  34. package/src/index.ts +5 -2
  35. package/src/provider.ts +6 -1
  36. package/src/runtime/browser.ts +34 -11
  37. package/src/runtime/choice.ts +25 -8
  38. package/src/runtime/resolver-public.ts +2 -0
  39. package/src/runtime/resolver-vendors/browser.ts +69 -11
  40. package/src/runtime/resolver-vendors/types.ts +21 -0
  41. package/src/runtime/resolver.ts +17 -5
  42. package/src/server/serve-implementation.ts +39 -1
  43. package/src/testing/run.ts +3 -3
  44. package/src/types.ts +41 -17
package/src/types.ts CHANGED
@@ -308,16 +308,16 @@ export interface ProviderSttConfig {
308
308
  }
309
309
 
310
310
  /**
311
- * `browser` is the in-house CDP pool (`apps/cdp-pool`, reached through
312
- * `createBrowserClient`) and is a first-class vendor rather than an escape hatch:
313
- * for fingerprint-family kinds, it was measured faster than a paid vendor
314
- * (4.5 s vs 17.5 s) at zero marginal cost.
311
+ * Union order is documentation only.
315
312
  *
316
- * `2captcha` is the vendor already carrying production traffic in
317
- * `apifuse-provider-tabelog`.
313
+ * The SDK owns the default hosted-vendor fallback policy and derives the chain
314
+ * from each provider's declared challenge kinds. Hosted solvers are preferred
315
+ * with `capsolver` ahead of `2captcha` in that policy.
318
316
  *
319
- * Union order is documentation only; the effective fallback order is whatever
320
- * `ProviderResolverConfig.vendors` declares.
317
+ * `browser` is the in-house CDP pool and remains opt-in; it is excluded from the
318
+ * default chain. `custom` is likewise reserved for provider-specific configuration.
319
+ *
320
+ * `ProviderResolverConfig.vendors` overrides the SDK policy when declared.
321
321
  */
322
322
  export type ProviderResolverVendor =
323
323
  | "browser"
@@ -411,8 +411,8 @@ export type ChallengeSolution =
411
411
  };
412
412
 
413
413
  export interface ProviderResolverConfig {
414
- /** Ordered vendor fallback chain, tried first to last. */
415
- readonly vendors: readonly ProviderResolverVendor[];
414
+ /** Optional ordered override for the SDK-owned vendor fallback chain. */
415
+ readonly vendors?: readonly ProviderResolverVendor[];
416
416
  /** Challenge kinds this provider is permitted to request. */
417
417
  readonly kinds: readonly ProviderChallengeKind[];
418
418
  /**
@@ -1636,9 +1636,6 @@ export interface NativeContext {
1636
1636
  readonly network: NativeNetworkClient;
1637
1637
  }
1638
1638
 
1639
- /** Consumer-facing alias for the native capability on provider contexts. */
1640
- export type NativeProviderContext = NativeContext;
1641
-
1642
1639
  export interface NativeProviderConfig {
1643
1640
  readonly network?: {
1644
1641
  readonly tcp?: readonly NativeTcpEgressRule[];
@@ -1816,6 +1813,10 @@ export interface BrowserPage extends BrowserFrame {
1816
1813
  cookies(): Promise<readonly BrowserCookie[]>;
1817
1814
  fill(selector: string, text: string): Promise<void>;
1818
1815
  goto(url: string): Promise<void>;
1816
+ goto(
1817
+ url: string,
1818
+ options?: { readonly timeout?: number; readonly waitUntil?: "load" | "domcontentloaded" },
1819
+ ): Promise<void>;
1819
1820
  pageId?: string;
1820
1821
  screenshot(options?: { fullPage?: boolean }): Promise<Buffer>;
1821
1822
  click(selector: string): Promise<void>;
@@ -2139,7 +2140,7 @@ export interface FlowContext {
2139
2140
  * un-keyed entries would be shared across all connectionless ceremonies. */
2140
2141
  readonly state?: ProviderRuntimeState;
2141
2142
  /** Present when the selected runtime supplies native network capabilities. */
2142
- readonly native?: NativeProviderContext;
2143
+ readonly native?: NativeContext;
2143
2144
  stealth: StealthClient;
2144
2145
  env: EnvContext;
2145
2146
  credential?: CredentialContext;
@@ -2275,8 +2276,8 @@ export interface ProviderContext {
2275
2276
  http: HttpClient;
2276
2277
  /** Present for requests carrying runtime-resolvable file references. */
2277
2278
  readonly files?: ProviderFilesContext;
2278
- /** Present when the selected runtime supplies native network capabilities. */
2279
- readonly native?: NativeProviderContext;
2279
+ /** Native network capability selected by declaration-derived contexts. */
2280
+ readonly native: NativeContext;
2280
2281
  cache: ProviderCache;
2281
2282
  state: ProviderRuntimeState;
2282
2283
  stealth: StealthClient;
@@ -2289,6 +2290,28 @@ export interface ProviderContext {
2289
2290
  choice: ProviderChoiceContext;
2290
2291
  }
2291
2292
 
2293
+ /**
2294
+ * The operation context exposed for one provider declaration. Capability
2295
+ * bindings are present only when their corresponding declaration is present;
2296
+ * trace and request remain ambient runtime bindings.
2297
+ */
2298
+ export type ProviderContextFor<TConfig> =
2299
+ Pick<ProviderContext, "trace" | "request">
2300
+ & ("env" extends keyof TConfig ? Pick<ProviderContext, "env"> : Record<never, never>)
2301
+ & ("credential" extends keyof TConfig ? Pick<ProviderContext, "credential"> : Record<never, never>)
2302
+ & ("http" extends keyof TConfig ? Pick<ProviderContext, "http"> : Record<never, never>)
2303
+ & ("files" extends keyof TConfig ? Pick<ProviderContext, "files"> : Record<never, never>)
2304
+ & ("native" extends keyof TConfig ? Pick<ProviderContext, "native"> : Record<never, never>)
2305
+ & ("cache" extends keyof TConfig ? Pick<ProviderContext, "cache"> : Record<never, never>)
2306
+ & ("state" extends keyof TConfig ? Pick<ProviderContext, "state"> : Record<never, never>)
2307
+ & ("stealth" extends keyof TConfig ? Pick<ProviderContext, "stealth"> : Record<never, never>)
2308
+ & ("browser" extends keyof TConfig ? Pick<ProviderContext, "browser"> : Record<never, never>)
2309
+ & ("auth" extends keyof TConfig ? Pick<ProviderContext, "auth"> : Record<never, never>)
2310
+ & ("ocr" extends keyof TConfig ? Pick<ProviderContext, "ocr"> : Record<never, never>)
2311
+ & ("stt" extends keyof TConfig ? Pick<ProviderContext, "stt"> : Record<never, never>)
2312
+ & ("resolver" extends keyof TConfig ? Pick<ProviderContext, "resolver"> : Record<never, never>)
2313
+ & ("choice" extends keyof TConfig ? Pick<ProviderContext, "choice"> : Record<never, never>);
2314
+
2292
2315
  export interface ProxiedOAuthConfig {
2293
2316
  authorizeUrl: string;
2294
2317
  tokenUrl: string;
@@ -2345,6 +2368,7 @@ export interface OperationContractMetadata {
2345
2368
  export interface OperationDefinition<
2346
2369
  TInput extends SchemaLike = SchemaLike,
2347
2370
  TOutput extends SchemaLike = SchemaLike,
2371
+ TContext = ProviderContext,
2348
2372
  > {
2349
2373
  /**
2350
2374
  * Short English display title for the operation. The SDK passes it through
@@ -2376,7 +2400,7 @@ export interface OperationDefinition<
2376
2400
  input: TInput;
2377
2401
  output: TOutput;
2378
2402
  handler(
2379
- ctx: ProviderContext,
2403
+ ctx: TContext,
2380
2404
  input: InferSchemaOutput<TInput>,
2381
2405
  ):
2382
2406
  | OperationHandlerResult<InferSchemaOutput<TOutput>>