@apifuse/provider-sdk 2.1.0-beta.5 → 2.1.0-beta.8

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 (163) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +2 -2
  3. package/SUBMISSION.md +2 -1
  4. package/bin/apifuse-check.ts +60 -6
  5. package/bin/apifuse-dev.ts +48 -5
  6. package/bin/apifuse-perf.ts +50 -11
  7. package/bin/apifuse-record.ts +35 -11
  8. package/bin/apifuse-submit-check.ts +1425 -3
  9. package/dist/ceremonies/index.d.ts +41 -0
  10. package/dist/ceremonies/index.js +490 -0
  11. package/dist/choice-token.d.ts +24 -0
  12. package/dist/choice-token.js +74 -0
  13. package/dist/cli/commands.d.ts +10 -0
  14. package/dist/cli/commands.js +80 -0
  15. package/dist/cli/create.d.ts +47 -0
  16. package/dist/cli/create.js +762 -0
  17. package/dist/config/loader.d.ts +107 -0
  18. package/dist/config/loader.js +935 -0
  19. package/dist/contract-json.d.ts +9 -0
  20. package/dist/contract-json.js +51 -0
  21. package/dist/contract-serialization.d.ts +4 -0
  22. package/dist/contract-serialization.js +78 -0
  23. package/dist/contract-types.d.ts +49 -0
  24. package/dist/contract-types.js +1 -0
  25. package/dist/contract.d.ts +6 -0
  26. package/dist/contract.js +155 -0
  27. package/dist/define.d.ts +97 -0
  28. package/dist/define.js +1320 -0
  29. package/dist/dev.d.ts +9 -0
  30. package/dist/dev.js +15 -0
  31. package/dist/errors.d.ts +59 -0
  32. package/dist/errors.js +97 -0
  33. package/dist/i18n/catalog.d.ts +29 -0
  34. package/dist/i18n/catalog.js +159 -0
  35. package/dist/i18n/index.d.ts +2 -0
  36. package/dist/i18n/index.js +2 -0
  37. package/dist/i18n/keys.d.ts +10 -0
  38. package/dist/i18n/keys.js +34 -0
  39. package/dist/index.d.ts +41 -0
  40. package/dist/index.js +37 -0
  41. package/dist/lint.d.ts +73 -0
  42. package/dist/lint.js +702 -0
  43. package/dist/observability.d.ts +5 -0
  44. package/dist/observability.js +39 -0
  45. package/dist/provider.d.ts +9 -0
  46. package/dist/provider.js +8 -0
  47. package/dist/public-schema-field-lint.d.ts +2 -0
  48. package/dist/public-schema-field-lint.js +158 -0
  49. package/dist/recipes/gov-api.d.ts +19 -0
  50. package/dist/recipes/gov-api.js +72 -0
  51. package/dist/recipes/rest-api.d.ts +21 -0
  52. package/dist/recipes/rest-api.js +115 -0
  53. package/dist/runtime/auth-flow.d.ts +14 -0
  54. package/dist/runtime/auth-flow.js +44 -0
  55. package/dist/runtime/browser.d.ts +25 -0
  56. package/dist/runtime/browser.js +1034 -0
  57. package/dist/runtime/cache.d.ts +10 -0
  58. package/dist/runtime/cache.js +372 -0
  59. package/dist/runtime/choice.d.ts +15 -0
  60. package/dist/runtime/choice.js +435 -0
  61. package/dist/runtime/credential.d.ts +8 -0
  62. package/dist/runtime/credential.js +61 -0
  63. package/dist/runtime/env.d.ts +2 -0
  64. package/dist/runtime/env.js +10 -0
  65. package/dist/runtime/executor.d.ts +16 -0
  66. package/dist/runtime/executor.js +51 -0
  67. package/dist/runtime/http.d.ts +8 -0
  68. package/dist/runtime/http.js +706 -0
  69. package/dist/runtime/insights.d.ts +9 -0
  70. package/dist/runtime/insights.js +324 -0
  71. package/dist/runtime/instrumentation.d.ts +8 -0
  72. package/dist/runtime/instrumentation.js +269 -0
  73. package/dist/runtime/key-derivation.d.ts +24 -0
  74. package/dist/runtime/key-derivation.js +73 -0
  75. package/dist/runtime/keyring.d.ts +25 -0
  76. package/dist/runtime/keyring.js +93 -0
  77. package/dist/runtime/namespace.d.ts +9 -0
  78. package/dist/runtime/namespace.js +19 -0
  79. package/dist/runtime/otlp.d.ts +39 -0
  80. package/dist/runtime/otlp.js +103 -0
  81. package/dist/runtime/perf.d.ts +12 -0
  82. package/dist/runtime/perf.js +52 -0
  83. package/dist/runtime/prevalidate.d.ts +12 -0
  84. package/dist/runtime/prevalidate.js +173 -0
  85. package/dist/runtime/provider.d.ts +2 -0
  86. package/dist/runtime/provider.js +11 -0
  87. package/dist/runtime/proxy-errors.d.ts +21 -0
  88. package/dist/runtime/proxy-errors.js +83 -0
  89. package/dist/runtime/proxy-telemetry.d.ts +8 -0
  90. package/dist/runtime/proxy-telemetry.js +174 -0
  91. package/dist/runtime/redis.d.ts +17 -0
  92. package/dist/runtime/redis.js +82 -0
  93. package/dist/runtime/request-options.d.ts +3 -0
  94. package/dist/runtime/request-options.js +42 -0
  95. package/dist/runtime/state.d.ts +17 -0
  96. package/dist/runtime/state.js +344 -0
  97. package/dist/runtime/stealth.d.ts +18 -0
  98. package/dist/runtime/stealth.js +827 -0
  99. package/dist/runtime/stt.d.ts +22 -0
  100. package/dist/runtime/stt.js +480 -0
  101. package/dist/runtime/trace.d.ts +26 -0
  102. package/dist/runtime/trace.js +142 -0
  103. package/dist/runtime/waterfall.d.ts +12 -0
  104. package/dist/runtime/waterfall.js +147 -0
  105. package/dist/schema.d.ts +74 -0
  106. package/dist/schema.js +243 -0
  107. package/dist/serve.d.ts +1 -0
  108. package/dist/serve.js +1 -0
  109. package/dist/server/index.d.ts +3 -0
  110. package/dist/server/index.js +2 -0
  111. package/dist/server/serve.d.ts +64 -0
  112. package/dist/server/serve.js +1110 -0
  113. package/dist/server/types.d.ts +136 -0
  114. package/dist/server/types.js +86 -0
  115. package/dist/stealth/profiles.d.ts +4 -0
  116. package/dist/stealth/profiles.js +259 -0
  117. package/dist/stream.d.ts +44 -0
  118. package/dist/stream.js +151 -0
  119. package/dist/testing/helpers.d.ts +23 -0
  120. package/dist/testing/helpers.js +95 -0
  121. package/dist/testing/index.d.ts +2 -0
  122. package/dist/testing/index.js +2 -0
  123. package/dist/testing/run.d.ts +34 -0
  124. package/dist/testing/run.js +303 -0
  125. package/dist/types.d.ts +1324 -0
  126. package/dist/types.js +61 -0
  127. package/dist/utils/date.d.ts +6 -0
  128. package/dist/utils/date.js +101 -0
  129. package/dist/utils/parse.d.ts +16 -0
  130. package/dist/utils/parse.js +51 -0
  131. package/dist/utils/text.d.ts +4 -0
  132. package/dist/utils/text.js +14 -0
  133. package/dist/utils/transform.d.ts +8 -0
  134. package/dist/utils/transform.js +48 -0
  135. package/package.json +42 -25
  136. package/src/ceremonies/index.ts +8 -2
  137. package/src/choice-token.ts +1 -0
  138. package/src/cli/commands.ts +8 -5
  139. package/src/cli/create.ts +28 -0
  140. package/src/cli/templates/provider/operations/ping.ts.tpl +3 -2
  141. package/src/cli/templates/provider/schemas/ping.ts.tpl +8 -0
  142. package/src/config/loader.ts +19 -1
  143. package/src/contract-json.ts +75 -0
  144. package/src/contract-serialization.ts +89 -0
  145. package/src/contract-types.ts +52 -0
  146. package/src/contract.ts +215 -0
  147. package/src/define.ts +37 -2
  148. package/src/errors.ts +15 -0
  149. package/src/i18n/catalog.ts +156 -0
  150. package/src/index.ts +22 -1
  151. package/src/lint.ts +256 -37
  152. package/src/provider.ts +45 -2
  153. package/src/runtime/browser.ts +685 -30
  154. package/src/runtime/cache.ts +35 -89
  155. package/src/runtime/choice.ts +760 -0
  156. package/src/runtime/executor.ts +19 -2
  157. package/src/runtime/redis.ts +116 -0
  158. package/src/runtime/state.ts +487 -0
  159. package/src/runtime/stealth.ts +8 -1
  160. package/src/server/serve.ts +361 -46
  161. package/src/server/types.ts +2 -0
  162. package/src/testing/run.ts +16 -3
  163. package/src/types.ts +209 -6
@@ -0,0 +1,107 @@
1
+ import Redis from "ioredis";
2
+ import type { ProviderProxyPolicy, TraceConfig } from "../types";
3
+ export declare const SMARTPROXY_APP_KEY_ENV = "APIFUSE__PROXY__SMARTPROXY_APP_KEY";
4
+ export declare const SMARTPROXY_MAX_LIFETIME_MINUTES = 2000;
5
+ export declare const DEFAULT_SMARTPROXY_POOL_SIZE = 20;
6
+ export declare const SMARTPROXY_MAX_POOL_SIZE = 20;
7
+ export declare const DEFAULT_PROXY_PROVIDER_ENV = "APIFUSE__PROXY__PROVIDER";
8
+ export declare const DEFAULT_PROXY_COUNTRY_ENV = "APIFUSE__PROXY__DEFAULT_COUNTRY";
9
+ export declare const DEFAULT_PROXY_LIFETIME_ENV = "APIFUSE__PROXY__DEFAULT_LIFETIME_MINUTES";
10
+ export declare const PROVIDER_CACHE_REDIS_URL_ENV = "APIFUSE__PROVIDER__CACHE_REDIS_URL";
11
+ export declare const PROVIDER_STATE_REDIS_URL_ENV = "APIFUSE__PROVIDER__STATE_REDIS_URL";
12
+ export declare const REDIS_URL_ENV = "APIFUSE__REDIS__URL";
13
+ export type ProxyOptions = {
14
+ url: string;
15
+ };
16
+ export type ProxyConfig = Partial<ProxyOptions> & {
17
+ provider?: string;
18
+ apiKey?: string;
19
+ };
20
+ export type BrowserConfig = {
21
+ executablePath?: string;
22
+ headless?: boolean;
23
+ };
24
+ export type SessionConfig = {
25
+ storage?: "sqlite" | "supabase";
26
+ path?: string;
27
+ };
28
+ export type ApiFuseConfig = {
29
+ proxy?: ProxyConfig;
30
+ browser?: BrowserConfig;
31
+ session?: SessionConfig;
32
+ trace?: TraceConfig;
33
+ credentials?: Record<string, Record<string, string>>;
34
+ };
35
+ export type ProxyResolutionOptions = {
36
+ proxy?: string;
37
+ upstream?: {
38
+ proxy?: boolean | ProviderProxyPolicy;
39
+ };
40
+ apifuseConfig?: Pick<ApiFuseConfig, "proxy">;
41
+ proxyPolicy?: ProviderProxyPolicy;
42
+ affinityKey?: string;
43
+ /** Zero-based proxy-pool attempt index used by SDK transports for failover. */
44
+ proxyAttempt?: number;
45
+ telemetry?: ProxyTelemetrySink;
46
+ };
47
+ export type ProxyCacheStatus = "memory_hit" | "redis_hit" | "allocator" | "soft_stale_refresh" | "lock_wait" | "redis_error" | "redis_corrupt" | "disabled";
48
+ export type SmartproxyAllocatorBodyClass = "network_error" | "http_error" | "empty" | "json_without_proxies" | "text_without_proxies" | "usable_proxy_endpoints";
49
+ export type ProxyResolutionTelemetryEvent = {
50
+ provider: "smartproxy";
51
+ cacheStatus: ProxyCacheStatus;
52
+ cacheHit: boolean;
53
+ resolutionMs: number;
54
+ allocatorMs?: number;
55
+ allocatorStatus?: number;
56
+ allocatorBodyClass?: SmartproxyAllocatorBodyClass;
57
+ allocatorAttempts?: number;
58
+ lockWaitMs?: number;
59
+ redisReadMs?: number;
60
+ redisWriteMs?: number;
61
+ poolAgeMs?: number;
62
+ poolExpiresInMs?: number;
63
+ attempts: number;
64
+ refreshes?: number;
65
+ };
66
+ export type ProxyAttemptTelemetryEvent = {
67
+ provider: "smartproxy";
68
+ attempt: number;
69
+ poolIndex?: number;
70
+ proxyHash?: string;
71
+ outcome: "ok" | "error";
72
+ errorCode?: string;
73
+ status?: number;
74
+ durationMs?: number;
75
+ };
76
+ export type ProxyTelemetrySink = {
77
+ recordProxyResolution(event: ProxyResolutionTelemetryEvent): void;
78
+ recordProxyAttempt?(event: ProxyAttemptTelemetryEvent): void;
79
+ };
80
+ export type ResolvedProxyConfig = {
81
+ shouldWarn: boolean;
82
+ url?: string;
83
+ source?: "explicit" | "env" | "config" | "smartproxy-allocator";
84
+ diagnostics?: Record<string, string | number | boolean>;
85
+ };
86
+ export declare class ProxyResolutionError extends Error {
87
+ readonly code: "PROXY_REQUIRED" | "PROXY_ALLOCATION_FAILED";
88
+ readonly telemetry?: ProxyResolutionTelemetryEvent;
89
+ constructor(code: "PROXY_REQUIRED" | "PROXY_ALLOCATION_FAILED", message: string, options?: {
90
+ cause?: unknown;
91
+ telemetry?: ProxyResolutionTelemetryEvent;
92
+ });
93
+ }
94
+ type ProxyRedisClient = Pick<Redis, "connect" | "del" | "eval" | "get" | "on" | "pttl" | "set" | "status">;
95
+ export declare function providerCacheRedisUrlFromEnv(): string | undefined;
96
+ export declare function providerStateRedisUrlFromEnv(): string | undefined;
97
+ /** @internal Test-only hook for exercising shared proxy-cache behavior. */
98
+ export declare function __setProxyRedisForTests(redis: ProxyRedisClient | undefined): void;
99
+ export declare function __setSmartproxyAllocatorDeadlineMsForTests(deadlineMs: number | undefined): void;
100
+ export declare function resolveProxyConfig(options?: ProxyResolutionOptions): ResolvedProxyConfig;
101
+ export declare function resolveProxyConfigAsync(options?: ProxyResolutionOptions): Promise<ResolvedProxyConfig>;
102
+ export declare function clearProxyResolutionCache(): void;
103
+ export declare function invalidateProxyResolutionCache(options?: ProxyResolutionOptions): boolean;
104
+ export declare function invalidateProxyResolutionCacheAsync(options?: ProxyResolutionOptions): Promise<boolean>;
105
+ export declare function defineConfig(config: ApiFuseConfig): ApiFuseConfig;
106
+ export declare function loadApiFuseConfig(dir?: string): Promise<ApiFuseConfig>;
107
+ export {};